Π‘Π»Π΅Π΄ ΠΊΠ°ΡΠΎ ΡΠΌΠ΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ²Π°Π»ΠΈ Π² ΠΏΡΠΎΠ΄ΡΠ»ΠΆΠ΅Π½ΠΈΠ΅ Π½Π° Π΄Π²Π° ΠΌΠ΅ΡΠ΅ΡΠ°, Π±Π΅ΡΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π΅Π½ΠΎ ΠΈΠ·Π΄Π°Π½ΠΈΠ΅ΡΠΎ Π½Π° ΡΠ°Π·ΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π°ΡΠ° ΡΠΈΡΡΠ΅ΠΌΠ° Π·Π° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΈΠ·Ρ ΠΎΠ΄Π½ΠΈΡ ΠΊΠΎΠ΄ Git 2.51. Git ΠΎΡΠΈΠ³ΡΡΡΠ²Π° Π²ΠΈΡΠΎΠΊΠ° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡ ΠΈ ΠΏΡΠ΅Π΄Π»Π°Π³Π° ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΈ Π·Π° Π½Π΅Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ²Π°Π½Π΅, ΠΎΡΠ½ΠΎΠ²Π°Π½ΠΈ Π½Π° ΡΠ°Π·ΠΊΠ»ΠΎΠ½ΡΠ²Π°Π½Π΅ ΠΈ ΡΠ»ΠΈΠ²Π°Π½Π΅ Π½Π° ΠΊΠ»ΠΎΠ½ΠΎΠ²Π΅. ΠΠ° Π΄Π° ΡΠ΅ Π³Π°ΡΠ°Π½ΡΠΈΡΠ° ΡΠ΅Π»ΠΎΡΡΡΠ° Π½Π° ΠΈΡΡΠΎΡΠΈΡΡΠ° ΠΈ ΡΡΡΠΎΠΉΡΠΈΠ²ΠΎΡΡΡΠ° ΠΊΡΠΌ βΠΎΠ±ΡΠ°ΡΠ½ΠΈ ΠΏΡΠΎΠΌΠ΅Π½ΠΈβ, ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π½Π΅ΡΠ²Π½ΠΎ Ρ Π΅ΡΠΈΡΠ°Π½Π΅ Π½Π° ΡΡΠ»Π°ΡΠ° ΠΏΡΠ΅Π΄ΠΈΡΠ½Π° ΠΈΡΡΠΎΡΠΈΡ Π² Π²ΡΡΠΊΠΎ ΠΊΠΎΠΌΠΈΡ, ΠΊΠ°ΠΊΡΠΎ ΠΈ ΡΠ΄ΠΎΡΡΠΎΠ²Π΅ΡΡΠ²Π°Π½Π΅ Ρ ΡΠΈΡΡΠΎΠ²ΠΈ ΠΏΠΎΠ΄ΠΏΠΈΡΠΈ Π½Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈΡΠ΅ Π½Π° ΠΎΡΠ΄Π΅Π»Π½ΠΈ ΡΠ°Π³ΠΎΠ²Π΅ ΠΈ ΠΊΠΎΠΌΠΈΡΠΈ. ΠΠΎΠ΄ΡΡ Π½Π° Git ΡΠ΅ ΡΠ°Π·ΠΏΡΠΎΡΡΡΠ°Π½ΡΠ²Π° ΠΏΠΎΠ΄ Π»ΠΈΡΠ΅Π½Π· GPLv2+.
Π Π½ΠΎΠ²Π°ΡΠ° Π²Π΅ΡΡΠΈΡ Π±ΡΡ Π° ΠΏΡΠΈΠ΅ΡΠΈ 506 ΠΏΡΠΎΠΌΠ΅Π½ΠΈ, ΠΈΠ·Π²ΡΡΡΠ΅Π½ΠΈ Ρ ΡΡΠ°ΡΡΠΈΠ΅ΡΠΎ Π½Π° 91 ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊ (21 ΠΎΡ ΠΊΠΎΠΈΡΠΎ ΡΡΠ°ΡΡΠ²Π°Ρ Π° Π² ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ°ΡΠ° Π½Π° Git Π·Π° ΠΏΡΡΠ² ΠΏΡΡ). ΠΡΠ½ΠΎΠ²Π½ΠΈ Π½ΠΎΠ²ΠΈΠ½ΠΈ (1, 2, 3):
- ΠΠΎΠ²ΠΈΡΠ΅Π½Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡ Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄ΠΈΡΠ΅ Β«git pushΒ» ΠΈ Β«git fetchΒ» Π² Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ° Ρ Π³ΠΎΠ»ΡΠΌ Π±ΡΠΎΠΉ ΡΠ΅ΡΠ΅ΡΠ΅Π½ΡΠΈΠΈ. Π£ΡΠΊΠΎΡΠ΅Π½ΠΈΠ΅ΡΠΎ Π΅ ΠΎΡΠΈΠ³ΡΡΠ΅Π½ΠΎ Π±Π»Π°Π³ΠΎΠ΄Π°ΡΠ΅Π½ΠΈΠ΅ Π½Π° ΠΎΠ±Π½ΠΎΠ²ΡΠ²Π°Π½Π΅ Π½Π° ΡΠ΅ΡΠ΅ΡΠ΅Π½ΡΠΈΠΈΡΠ΅ Π² ΠΏΠ°ΠΊΠ΅ΡΠ΅Π½ ΡΠ΅ΠΆΠΈΠΌ, ΠΏΡΠΈ ΠΊΠΎΠΉΡΠΎ Π² Π΅Π΄Π½Π° ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΡ ΡΠ΅ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ²Π°Ρ Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΡΠ΅ΡΠ΅ΡΠ΅Π½ΡΠΈΠΈ, Π²ΠΌΠ΅ΡΡΠΎ Π΄Π° ΡΠ΅ ΡΡΠ·Π΄Π°Π²Π° ΠΎΡΠ΄Π΅Π»Π½Π° ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΡ Π·Π° ΠΎΠ±Π½ΠΎΠ²ΡΠ²Π°Π½Π΅ Π½Π° Π²ΡΡΠΊΠ° ΡΠ΅ΡΠ΅ΡΠ΅Π½ΡΠΈΡ. ΠΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡΡΠ° Π·Π½Π°ΡΠΈΡΠ΅Π»Π½ΠΎ ΡΠ²Π΅Π»ΠΈΡΠΈ ΡΠΊΠΎΡΠΎΡΡΡΠ° Π½Π° ΡΠ°Π±ΠΎΡΠ° Π½Π° Π±Π΅ΠΊΠ΅Π½Π΄Π° Β«reftableΒ», ΠΊΠΎΠΉΡΠΎ ΡΠ΅Π³Π° Π½Π°Π΄ΠΌΠΈΠ½Π°Π²Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡΡΠ° Π½Π° Π±Π΅ΠΊΠ΅Π½Π΄Π° Β«filesΒ». ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π² ΡΠ΅ΡΡΠΎΠ²ΠΎ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ Ρ 10 Ρ ΠΈΠ»ΡΠ΄ΠΈ ΡΠ΅ΡΠ΅ΡΠ΅Π½ΡΠΈΠΈ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡΡΠ° Π½Π° Β«git fetchΒ» ΠΏΡΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° Π±Π΅ΠΊΠ΅Π½Π΄Π° Β«reftableΒ» ΡΠ΅ ΡΠ²Π΅Π»ΠΈΡΠΈ 22 ΠΏΡΡΠΈ, Π° ΠΏΡΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° Π±Π΅ΠΊΠ΅Π½Π΄Π° Β«filesΒ» β 1.25 ΠΏΡΡΠΈ. ΠΠ° Β«git pushΒ» ΡΠ²Π΅Π»ΠΈΡΠ΅Π½ΠΈΠ΅ΡΠΎ Π΅ 18 ΠΈ 1.21 ΠΏΡΡΠΈ, ΡΡΠΎΡΠ²Π΅ΡΠ½ΠΎ.
- ΠΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ Π΅ Π½ΠΎΠ² ΠΌΠ΅ΡΠΎΠ΄ Π·Π° ΠΎΠΏΠ°ΠΊΠΎΠ²Π°Π½Π΅ Π² pack-ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ Π½Π° ΡΠ°ΡΡΠΈ ΠΎΡ Ρ
ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ΡΠΎ, ΠΊΠΎΠΈΡΠΎ Π½Π΅ ΡΠ° ΡΠ²ΡΡΠ·Π°Π½ΠΈ Ρ ΠΏΡΠΎΡΠ»Π΅Π΄ΡΠ²Π°Π½Π΅ Π½Π° Π½Π΅Π΄ΠΎΡΡΠΈΠΆΠΈΠΌΠΈΡΠ΅ ΠΎΠ±Π΅ΠΊΡΠΈ, ΠΊΡΠΌ ΠΊΠΎΠΈΡΠΎ Π² ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ Π½ΡΠΌΠ° ΡΠ΅ΡΠ΅ΡΠ΅Π½ΡΠΈΠΈ (Π½Π΅ ΡΠ° ΡΠ²ΡΡΠ·Π°Π½ΠΈ Ρ ΠΊΠ»ΠΎΠ½ΠΎΠ²Π΅ ΠΈΠ»ΠΈ ΡΠ°Π³ΠΎΠ²Π΅). ΠΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡΡΠ° Π·Π° Π½Π΅Π΄ΠΎΡΡΠΈΠΆΠΈΠΌΠΈΡΠ΅ ΠΎΠ±Π΅ΠΊΡΠΈ ΡΠ΅ ΡΡΡ
ΡΠ°Π½ΡΠ²Π° Π² ΠΎΡΠ΄Π΅Π»Π½ΠΈ pack-ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ (βcruft packsβ), ΠΊΠΎΠ΅ΡΠΎ Π²ΠΎΠ΄ΠΈ Π΄ΠΎ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎΡΡΡΠ° ΠΎΡ ΠΎΡΡΠ°Π·ΡΠ²Π°Π½Π΅ Π² ΠΌΠ½ΠΎΠ³ΠΎΠΏΠ°ΠΊΠ΅ΡΠ½ΠΈ ΠΈΠ½Π΄Π΅ΠΊΡΠΈ MIDX (multi-pack index), Π·Π° Π΄Π° ΡΠ΅ ΠΎΠ±Ρ
Π²Π°Π½Π°Ρ ΠΎΠ±Π΅ΠΊΡΠΈΡΠ΅, ΠΊΠΎΠΈΡΠΎ ΠΏΡΡΠ²ΠΎΠ½Π°ΡΠ°Π»Π½ΠΎ ΡΠ° Π±ΠΈΠ»ΠΈ Π½Π΅Π΄ΠΎΡΡΠΈΠΆΠΈΠΌΠΈ ΠΈ ΡΠ° ΡΠ΅ ΡΡΡ
ΡΠ°Π½ΡΠ²Π°Π»ΠΈ ΡΠ°ΠΌΠΎ Π² cruft-ΠΏΠ°ΠΊΠ΅ΡΠ°, Π½ΠΎ ΡΠ»Π΅Π΄ ΡΠΎΠ²Π° ΡΠ° ΡΡΠ°Π½Π°Π»ΠΈ Π΄ΠΎΡΡΠΈΠΆΠΈΠΌΠΈ ΡΠ»Π΅Π΄ ΠΊΠΎΠΌΠΈΡ, ΠΊΠΎΠΉΡΠΎ ΡΠ΅ Π΅ ΠΎΡΠ½Π°ΡΡΠ» Π΄ΠΎ ΡΡΡ
.
Π Π½ΠΎΠ²Π°ΡΠ° Π²Π΅ΡΡΠΈΡ ΠΏΡΠΈ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎ ΠΎΠΏΠ°ΠΊΠΎΠ²Π°Π½Π΅ Π½Π° pack-ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ Π΅ ΠΎΡΠΈΠ³ΡΡΠ΅Π½ΠΎ Π·Π°ΠΏΠ°Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° Π΄ΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π½ΠΈ ΠΊΠΎΠΏΠΈΡ Π½Π° Π΄ΠΎΡΡΠΈΠΆΠΈΠΌΠΈΡΠ΅ ΠΎΠ±Π΅ΠΊΡΠΈ, ΡΡΡ ΡΠ°Π½ΡΠ²Π°Π½ΠΈ ΡΠ°ΠΌΠΎ Π² cruft-ΡΠ°ΠΉΠ»ΠΎΠ²Π΅. Π’ΠΎΠ²Π° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π³Π°ΡΠ°Π½ΡΠΈΡΠ°, ΡΠ΅ Π² Π½Π°Π±ΠΎΡΠ° pack-ΡΠ°ΠΉΠ»ΠΎΠ²Π΅, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΈ Π·Π° ΡΡΡ ΡΠ°Π½Π΅Π½ΠΈΠ΅ Π½Π° Π΄ΠΎΡΡΠΈΠΆΠΈΠΌΠΈΡΠ΅ ΠΎΠ±Π΅ΠΊΡΠΈ, Π½Π΅ ΡΠ΅ ΡΡΠ΄ΡΡΠΆΠ°Ρ ΠΎΠ±Π΅ΠΊΡΠΈ, ΠΊΠΎΠΈΡΠΎ ΡΠ΅ ΠΏΠΎΠ·ΠΎΠ²Π°Π²Π°Ρ Π½Π° Π΄ΡΡΠ³ΠΈ ΠΎΠ±Π΅ΠΊΡΠΈ, ΡΡΡ ΡΠ°Π½ΡΠ²Π°Π½ΠΈ ΠΈΠ·Π²ΡΠ½ ΡΠΎΠ·ΠΈ Π½Π°Π±ΠΎΡ. ΠΠ° ΠΈΠ·ΠΊΠ»ΡΡΠ²Π°Π½Π΅ Π½Π° Π½Π΅Π΄ΠΎΡΡΠΈΠΆΠΈΠΌΠΎΡΠΎ ΡΡΠ΄ΡΡΠΆΠ°Π½ΠΈΠ΅ ΠΎΡ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠ°ΠΊΠ΅ΡΠ½ΠΈΡΠ΅ ΠΈΠ½Π΄Π΅ΠΊΡΠΈ (MIDX) ΡΠ΅ ΠΏΡΠ΅Π΄Π»Π°Π³Π° Π½Π°ΡΡΡΠΎΠΉΠΊΠ° βrepack.MIDXMustContainCruftβ, ΠΊΠΎΡΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π·Π½Π°ΡΠΈΡΠ΅Π»Π½ΠΎ Π½Π°ΠΌΠ°Π»ΡΠ²Π°Π½Π΅ Π½Π° ΡΠ°Π·ΠΌΠ΅ΡΠ° Π½Π° ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΈ ΠΈΠ½Π΄Π΅ΠΊΡΠΈ. ΠΠΊΠ»ΡΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° Π½Π°ΡΡΡΠΎΠΉΠΊΠ°ΡΠ° Π² ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ GitHub Π΅ Π΄ΠΎΠ²Π΅Π»ΠΎ Π΄ΠΎ Π½Π°ΠΌΠ°Π»ΡΠ²Π°Π½Π΅ Π½Π° ΡΠ°Π·ΠΌΠ΅ΡΠ° Π½Π° MIDX-ΠΈΠ½Π΄Π΅ΠΊΡΠΈ Ρ 38%, ΡΡΠΊΠΎΡΠ΅Π½ΠΈΠ΅ Π½Π° Π·Π°ΠΏΠΈΡΠΈΡΠ΅ Π² MIDX-ΠΈΠ½Π΄Π΅ΠΊΡΠΈ Ρ 35% ΠΈ ΠΏΠΎΠ²ΠΈΡΠ°Π²Π°Π½Π΅ Π½Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡΡΠ° Π½Π° ΡΠ΅ΡΠ΅Π½Π΅ Ρ 5%.
- Π ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ° βgit pack-objectsβ Π΅ Π΄ΠΎΠ±Π°Π²Π΅Π½Π° ΠΎΠΏΡΠΈΡ ββpath-walkβ, ΠΊΠΎΡΡΠΎ Π²ΠΊΠ»ΡΡΠ²Π° Π½ΠΎΠ² ΠΌΠ΅ΡΠΎΠ΄ Π·Π° ΡΡΠ±ΠΈΡΠ°Π½Π΅ Π½Π° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π·Π° ΠΎΠ±Π΅ΠΊΡΠΈΡΠ΅ ΠΏΡΠΈ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎ ΠΎΠΏΠ°ΠΊΠΎΠ²Π°Π½Π΅ Π½Π° pack-ΡΠ°ΠΉΠ»ΠΎΠ²Π΅. ΠΠΌΠ΅ΡΡΠΎ ΠΎΠ±Ρ ΠΎΠΆΠ΄Π°Π½Π΅ Π½Π° ΠΎΠ±Π΅ΠΊΡΠΈΡΠ΅ Π² ΡΠ΅Π΄Π° Π½Π° ΡΠ΅Π²ΠΈΠ·ΠΈΠΈΡΠ΅, ΠΏΡΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° ΡΠ΅ΠΆΠΈΠΌΠ° ββpath-walkβ ΠΎΠ±Π΅ΠΊΡΠΈΡΠ΅ ΡΠ΅ ΠΏΠ΅ΡΠ΅Π±ΠΈΡΡΡ ΡΡΠ΅Π· ΠΎΠ±Ρ ΠΎΠΆΠ΄Π°Π½Π΅ Π½Π° ΡΠ°ΠΉΠ»ΠΎΠ²ΠΈΡΠ΅ ΠΏΡΡΠΈΡΠ°, ΠΊΠΎΠ΅ΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° ΠΎΠΏΠ°ΠΊΠΎΠ²Π°Π½Π΅ΡΠΎ Π½Π° Π²ΡΠΈΡΠΊΠΈ ΠΎΠ±Π΅ΠΊΡΠΈ Ρ Π΅Π΄ΠΈΠ½ ΠΈ ΡΡΡ ΡΠ°ΠΉΠ»ΠΎΠ² ΠΏΡΡ Π½Π°Π²Π΅Π΄Π½ΡΠΆ. Π’Π°ΠΊΡΠ² ΠΏΠΎΠ΄Ρ ΠΎΠ΄ Π΄Π°Π²Π° Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ Π·Π° ΠΈΠ·ΠΊΠ»ΡΡΠ²Π°Π½Π΅ Π½Π° Π΅Π²ΡΠΈΡΠΈΡΠΈΠΊΠ°ΡΠ°, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ° Ρ Π΅ΡΠΈΡΠ°Π½Π΅ Π·Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π΅ Π½Π° ΡΠ²ΡΡΠ·Π°Π½ΠΎΡΡΡΠ° Π½Π° ΠΎΠ±Π΅ΠΊΡΠ° Ρ Π½Π΅Π³ΠΎΠ²ΠΈΡ ΡΠ°ΠΉΠ»ΠΎΠ² ΠΏΡΡ, ΠΈ Π΄Π° ΡΠ΅ ΠΈΠ·Π±Π΅Π³Π½Π΅ ΡΠΎΡΡΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° ΠΎΠ±Π΅ΠΊΡΠΈΡΠ΅ ΠΏΡΠ΅Π΄ΠΈ ΠΎΠΏΠ°ΠΊΠΎΠ²Π°Π½Π΅. ΠΡΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° ΡΠ΅ΠΆΠΈΠΌΠ° ββpath-walkβ ΡΠ°Π·ΠΌΠ΅ΡΡΡ Π½Π° Π³Π΅Π½Π΅ΡΠΈΡΠ°Π½ΠΈΡΠ΅ pack-ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ Π΅ Π·Π½Π°ΡΠΈΡΠ΅Π»Π½ΠΎ ΠΏΠΎ-ΠΌΠ°Π»ΡΠΊ Π² ΡΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ Ρ Π°Π³ΡΠ΅Π³ΠΈΡΠ°Π½Π΅ Π½Π° ΠΎΠ±Π΅ΠΊΡΠΈ ΡΡΠ΅Π· Ρ Π΅ΡΠΎΠ²Π΅.
- ΠΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ Π΅ ΡΠΎΡΠΌΠ°Ρ Π·Π° ΠΎΠ±ΠΌΠ΅Π½ Π½Π° Π·Π°ΠΏΠ°Π·Π΅Π½ΠΈ ΡΡΡΡΠΎΡΠ½ΠΈΡ Π½Π° ΡΠ°Π±ΠΎΡΠ½ΠΎΡΠΎ Π΄ΡΡΠ²ΠΎ ΠΈ ΠΈΠ½Π΄Π΅ΠΊΡΠΈΡΠ΅ Π² ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ, Π³Π΅Π½Π΅ΡΠΈΡΠ°Π½ΠΈ Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ° βgit stashβ. ΠΠΎΠ²ΠΈΡΡ ΡΠΎΡΠΌΠ°Ρ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° ΠΊΠΎΠ΄ΠΈΡΠ°Π½Π΅ Π½Π° Π·Π°ΠΏΠ°Π·Π΅Π½ΠΈΡΠ΅ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ (stash-Π·Π°ΠΏΠΈΡΠΈ) ΠΏΠΎΠ΄ ΡΠΎΡΠΌΠ°ΡΠ° Π½Π° ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π½ΠΎΡΡ ΠΎΡ ΠΊΠΎΠΌΠΈΡΠΈ. ΠΠ° Π²Π½ΠΎΡ ΠΈ ΠΈΠ·Π½ΠΎΡ ΡΠ° ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈ ΠΏΠΎΠ΄ΠΏΠΎΡΠ΅Π΄ΠΈΡΠΈΡΠ΅ βgit stash importβ ΠΈ βgit stash exportβ, ΠΊΠΎΠΈΡΠΎ ΠΌΠΎΠ³Π°Ρ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ Π·Π° ΠΏΡΠ΅Π½ΠΎΡ Π½Π° Π·Π°ΠΏΠ°Π·Π΅Π½ΠΈ ΡΡΡΡΠΎΡΠ½ΠΈΡ ΠΎΡ Π΅Π΄Π½Π° ΡΠΈΡΡΠ΅ΠΌΠ° Π½Π° Π΄ΡΡΠ³Π° ΠΈ Π·Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ push ΠΈΠ»ΠΈ pull Ρ ΡΠ΅Π·ΠΈ ΡΡΡΡΠΎΡΠ½ΠΈΡ ΠΊΠ°ΡΠΎ ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈ ΠΊΠ»ΠΎΠ½ΠΎΠ²Π΅ ΠΈΠ»ΠΈ ΡΠ°Π³ΠΎΠ²Π΅. git stash export βto-ref refs/stashes/my-stash git push origin refs/stashes/my-stash β¦ git fetch origin β+refs/stashes/*:refs/stashes/*β git stash import refs/stashes/my-stash
- Π ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ° Β«git cat-fileΒ», ΠΊΠΎΡΡΠΎ ΠΈΠ·Π²Π΅ΠΆΠ΄Π° ΡΡΠ΄ΡΡΠΆΠ°Π½ΠΈΠ΅ΡΠΎ Π½Π° Π·Π°Π΄Π°Π΄Π΅Π½ΠΈ ΠΎΠ±Π΅ΠΊΡΠΈ, Π΅ ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ°Π½Π° Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΠ° Π·Π° ΠΏΠΎΠΊΠ°Π·Π²Π°Π½Π΅ Π½Π° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π·Π° Π»ΠΈΠΏΡΠ²Π°ΡΠΈ ΠΎΠ±Π΅ΠΊΡΠΈ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΠΎΡΠ°Π΄ΠΈ ΠΏΠΎΠ²ΡΠ΅Π΄Π° Π½Π° Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ΡΠΎ) ΠΈ ΠΏΠΎΠ΄ΠΌΠΎΠ΄ΡΠ»ΠΈ, ΡΡΠ΅Π· ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° ΠΎΠΏΡΠΈΠΈ Β«βbatchΒ» ΠΈ Β«βbatch-checkΒ». ΠΠΎ-ΡΠ°Π½ΠΎ, ΠΏΡΠΈ ΡΠΊΠ°Π·Π²Π°Π½Π΅ Π½Π° ΠΏΡΡΡ ΠΊΡΠΌ ΠΏΠΎΠ΄ΠΌΠΎΠ΄ΡΠ»Π°, ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ° Β«git cat-file βbatch-checkΒ» ΠΈΠ·Π²Π΅ΠΆΠ΄Π°ΡΠ΅ Β«missingΒ», Π° ΡΠ΅Π³Π° ΡΠ΅ ΠΏΠΎΠΊΠ°ΠΆΠ΅ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠ° Π½Π° ΠΎΠ±Π΅ΠΊΡΠ°.
- Π ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ° Β«git logΒ» ΡΠ° Π²Π½Π΅Π΄ΡΠ΅Π½ΠΈ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ, ΠΎΡΠ½ΠΎΠ²Π°Π²Π°ΡΠΈ ΡΠ΅ Π½Π° Bloom ΡΠΈΠ»ΡΡΠΈ, Π·Π° ΡΡΠΊΠΎΡΡΠ²Π°Π½Π΅ Π½Π° ΡΡΡΡΠ΅Π½Π΅ΡΠΎ Π² ΠΈΡΡΠΎΡΠΈΡΡΠ° Π½Π° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡΡΠ° ΠΏΡΠΈ ΡΠΊΠ°Π·Π²Π°Π½Π΅ Π½Π° ΡΠΈΠ»ΡΡΠΈ Ρ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΡΠ°ΠΉΠ»ΠΎΠ²ΠΈ ΠΏΡΡΠΈΡΠ°, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Β«git log β path/to/a path/to/bΒ».
- ΠΠΎΠΌΠ°Π½Π΄ΠΈΡΠ΅ Β«git switchΒ» ΠΈ Β«git restoreΒ», ΠΊΠΎΠΈΡΠΎ ΠΎΡ 2019 Π³ΠΎΠ΄ΠΈΠ½Π° ΡΠ΅ ΡΡΠΈΡΠ°Ρ Π° Π·Π° Π΅ΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠ°Π»Π½ΠΈ, ΡΠ° ΡΡΠ°Π±ΠΈΠ»ΠΈΠ·ΠΈΡΠ°Π½ΠΈ. ΠΠΎΠΌΠ°Π½Π΄ΠΈΡΠ΅ ΡΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΡΡ ΠΊΠ°ΡΠΎ ΡΡΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΈ Π΅ΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½ΡΠΈ Π½Π° Β«git checkoutΒ», ΡΠ°Π·Π΄Π΅Π»ΡΡΠΈ ΡΠ°ΠΊΠΈΠ²Π° ΡΠ»Π°Π±ΠΎ ΡΠ²ΡΡΠ·Π°Π½ΠΈ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π½Π° ΡΠ°Π·ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΊΠ°ΡΠΎ ΠΌΠ°Π½ΠΈΠΏΡΠ»Π°ΡΠΈΡ Ρ ΠΊΠ»ΠΎΠ½ΠΎΠ²Π΅ (ΠΏΡΠ΅Π²ΠΊΠ»ΡΡΠ²Π°Π½Π΅ ΠΈ ΡΡΠ·Π΄Π°Π²Π°Π½Π΅) ΠΈ Π²ΡΠ·ΡΡΠ°Π½ΠΎΠ²ΡΠ²Π°Π½Π΅ Π½Π° ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ Π² ΡΠ°Π±ΠΎΡΠ½Π°ΡΠ° Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ.
- ΠΠ±ΡΠ²Π΅Π½Π° Π·Π° ΠΎΡΡΠ°ΡΡΠ»Π° ΠΈ ΠΏΠ»Π°Π½ΠΈΡΠ°Π½Π° Π·Π° ΠΏΡΠ΅ΠΌΠ°Ρ Π²Π°Π½Π΅ Π² ΠΊΠ»ΠΎΠ½ Git 3.0 Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ° Β«git whatchangedΒ», Π΅ΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½ΡΠ½Π° Π½Π° Β«git log βrawΒ».
- Π ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ° Β«git for-each-refΒ» Π΅ Π΄ΠΎΠ±Π°Π²Π΅Π½Π° ΠΎΠΏΡΠΈΡ Β«βstart-afterΒ», ΠΊΠΎΡΡΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΡΡΠ²ΠΌΠ΅ΡΡΠ½ΠΎ Ρ ΠΎΠΏΡΠΈΡΡΠ° Β«βcountΒ» Π·Π° ΠΎΡΠ³Π°Π½ΠΈΠ·ΠΈΡΠ°Π½Π΅ Π½Π° ΠΈΠ·Π²Π΅ΠΆΠ΄Π°Π½Π΅ΡΠΎ Π½Π° ΡΡΡΠ°Π½ΠΈΡΠΈ.
- Π ΠΊΠΎΠΌΠ°Π½Π΄ΠΈΡΠ΅ Β«git mergeΒ» ΠΈ Β«git pullΒ» Π΅ Π΄ΠΎΠ±Π°Π²Π΅Π½Π° ΠΎΠΏΡΠΈΡ Β«βcompact-summaryΒ» Π·Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° ΠΊΠΎΠΌΠΏΠ°ΠΊΡΠ΅Π½ ΡΠΎΡΠΌΠ°Ρ Π½Π° ΠΎΠ±ΠΎΠ±ΡΠ°Π²Π°ΡΠ° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π·Π° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡΡΠ° Π²ΠΌΠ΅ΡΡΠΎ ΡΠΎΡΠΌΠ°ΡΠ° diffstat.
- Π ΠΊΠΎΠ΄ΠΎΠ²Π°ΡΠ° Π±Π°Π·Π° Π½Π° Git Π΅ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° ΠΊΠ»ΡΡΠΎΠ²Π°ΡΠ° Π΄ΡΠΌΠ° Β«boolΒ», ΠΊΠΎΡΡΠΎ ΡΠ΅ ΠΏΠΎΡΠ²ΠΈ Π² ΡΡΠ°Π½Π΄Π°ΡΡΠ° C99. Π‘ΡΡΠΎ ΡΠ°ΠΊΠ° ΡΠ° Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠΈΡΠ°Π½ΠΈ Π½ΡΠΊΠΎΠΈ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π½ΠΎΡΡΠΈ ΠΎΡ C99, Π΅ΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠ°Π»Π½ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΈ Π² Git (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΠ»Π°Π½ΠΈΡΠ°Ρ ΡΠ΅ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΈ Β«(struct foo){ .member = value };Β» Π΄Π° Π±ΡΠ΄Π°Ρ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈ Π² ΡΡΠ΅Π΄Π°ΡΠ° Π½Π° 2026 Π³ΠΎΠ΄ΠΈΠ½Π°). ΠΠΎΠΌΠΏΠΈΠ»Π°ΡΠΎΡ Ρ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° C99 Π΅ Π·Π°Π΄ΡΠ»ΠΆΠΈΡΠ΅Π»Π΅Π½ Π·Π° Git ΠΎΡ 2021 Π³ΠΎΠ΄ΠΈΠ½Π°, Π½ΠΎ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π½ΠΎΡΡΠΈΡΠ΅ Π½Π° ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡΡΠ° C99 ΡΠ΅ Π²Π½Π΅Π΄ΡΡΠ²Π°Ρ ΠΈΠ·ΠΊΠ»ΡΡΠΈΡΠ΅Π»Π½ΠΎ Π²Π½ΠΈΠΌΠ°ΡΠ΅Π»Π½ΠΎ Π·Π° Π·Π°ΠΏΠ°Π·Π²Π°Π½Π΅ Π½Π° ΡΡΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΡΠ° Ρ ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΎΡΠΈ, ΠΊΠΎΠΈΡΠΎ ΡΠ°ΡΡΠΈΡΠ½ΠΎ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ°Ρ ΡΠΎΠ·ΠΈ ΡΡΠ°Π½Π΄Π°ΡΡ.
- Π ΠΏΡΠ°Π²ΠΈΠ»Π°ΡΠ° Π·Π° ΠΏΡΠΈΠ΅ΠΌ Π½Π° ΠΏΠ°ΡΠΎΠ²Π΅ ΡΠ° Π½Π°ΠΏΡΠ°Π²Π΅Π½ΠΈ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π°ΡΠΈ ΠΈΠ·ΠΏΡΠ°ΡΠ°Π½Π΅ΡΠΎ Π½Π° ΠΏΠ°ΡΠΎΠ²Π΅ ΠΏΠΎΠ΄ ΠΏΡΠ΅Π²Π΄ΠΎΠ½ΠΈΠΌ, Π° Π½Π΅ ΡΠ°ΠΌΠΎ ΠΏΠΎΠ΄ ΠΈΡΡΠΈΠ½ΡΠΊΠΎΡΠΎ ΠΈΠΌΠ΅ Π½Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°. ΠΡΠΎΠΌΡΠ½Π°ΡΠ° ΡΡΠΎΡΠ²Π΅ΡΡΡΠ²Π° Π½Π° ΠΏΡΠ°Π²ΠΈΠ»Π°ΡΠ° Π·Π° ΠΏΡΠΈΠ΅ΠΌ Π½Π° ΠΏΠ°ΡΠΎΠ²Π΅ Π² ΡΠ΄ΡΠΎΡΠΎ Π½Π° Linux.
- ΠΠΊΡΡΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½ Π΅ ΡΠΏΠΈΡΡΠΊΡΡ Ρ Π½Π΅ΡΡΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΈ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ, ΠΊΠΎΠΈΡΠΎ ΡΠ΅ Π±ΡΠ΄Π°Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈ Π² ΠΊΠ»ΠΎΠ½ Git 3.0. Π‘ΡΠ΅Π΄ Π·Π½Π°ΡΠΈΡΠ΅Π»Π½ΠΈΡΠ΅ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ Π² ΠΏΡΠ΅Π΄ΡΡΠΎΡΡΠΎΡΠΎ ΠΈΠ·Π΄Π°Π½ΠΈΠ΅ Git 3.0 Π΅ ΠΏΡΠ΅ΠΌΠΈΠ½Π°Π²Π°Π½Π΅ΡΠΎ ΠΏΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ ΠΊΡΠΌ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΈ Π½Π° ΠΎΠ±Π΅ΠΊΡΠΈ, ΠΎΡΠ½ΠΎΠ²Π°Π½ΠΈ Π½Π° Ρ Π΅Ρ Π°Π»Π³ΠΎΡΠΈΡΡΠΌΠ° SHA-256 ΠΏΡΠΈ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½Π΅ Π½Π° Π½ΠΎΠ²ΠΈ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ° ΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° ΡΠΎΡΠΌΠ°ΡΠ° "reftable" Π·Π° ΡΡΡ ΡΠ°Π½Π΅Π½ΠΈΠ΅ Π½Π° Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ΡΠΎ Ρ Π²ΡΡΠ·ΠΊΠΈ ΠΊΡΠΌ ΠΊΠ»ΠΎΠ½ΠΎΠ²Π΅ ΠΈ ΡΠ°Π³ΠΎΠ²Π΅ (ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΡΠ΅ Π±Π»ΠΎΡΠ½ΠΎ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ ΠΎΡ ΠΏΡΠΎΠ΅ΠΊΡΠ° JGit, ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠ°Π½ΠΎ Π·Π° ΡΡΡ ΡΠ°Π½Π΅Π½ΠΈΠ΅ Π½Π° ΠΌΠ½ΠΎΠ³ΠΎ Π³ΠΎΠ»ΡΠΌ Π±ΡΠΎΠΉ Π²ΡΡΠ·ΠΊΠΈ).
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: opennet.ru
