Выпуск систСмы управлСния исходными тСкстами Git 2.51

ПослС Π΄Π²ΡƒΡ… мСсяцСв Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ прСдставлСн Ρ€Π΅Π»ΠΈΠ· распрСдСлСнной систСмы управлСния исходными тСкстами 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) нСдостиТимого содСрТимого cruft-Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½Π° настройка Β«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Β» задСйствованы ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ Π½Π° основС Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΠΎΠ² Π‘Π»ΡƒΠΌΠ° для ускорСния поиска Π² истории ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΏΡ€ΠΈ ΡƒΠΊΠ°Π·Π°Π½ΠΈΠΈ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΠΎΠ² с нСсколькими Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹ΠΌΠΈ путями, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Β«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 (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π² сСрСдинС 2026 Π³ΠΎΠ΄Π° ΠΏΠ»Π°Π½ΠΈΡ€ΡƒΡŽΡ‚ Ρ€Π°Π·Ρ€Π΅ΡˆΠΈΡ‚ΡŒ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ конструкций Β«(struct foo){ .member = value };Β»). ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€ с ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ C99 являСтся ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ для Git c 2021 Π³ΠΎΠ΄Π°, Π½ΠΎ возмоТности спСцификации C99 Π²Π½Π΅Π΄Ρ€ΡΡŽΡ‚ΡΡ ΠΊΡ€Π°ΠΉΠ½Π΅ остороТно для сохранСния совмСстимости с компиляторами, лишь частично ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‰ΠΈΠΌΠΈ Π΄Π°Π½Π½Ρ‹ΠΉ стандарт.
  • Π’ ΠΏΡ€Π°Π²ΠΈΠ»Π° ΠΏΡ€ΠΈΡ‘ΠΌΠ° ΠΏΠ°Ρ‚Ρ‡Π΅ΠΉ внСсСны измСнСния, Ρ€Π°Π·Ρ€Π΅ΡˆΠ°ΡŽΡ‰ΠΈΠ΅ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΡƒ ΠΏΠ°Ρ‚Ρ‡Π΅ΠΉ ΠΏΠΎΠ΄ псСвдонимом, Π° Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎΠ΄ настоящим ΠΈΠΌΠ΅Π½Π΅ΠΌ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°. ИзмСнСниС соотвСтствуСт ΠΏΡ€Π°Π²ΠΈΠ»Π°ΠΌ ΠΏΡ€ΠΈΡ‘ΠΌΠ° ΠΏΠ°Ρ‚Ρ‡Π΅ΠΉ Π² ядро Linux.
  • ΠžΠ±Π½ΠΎΠ²Π»Ρ‘Π½ список Π½Π°Ρ€ΡƒΡˆΠ°ΡŽΡ‰ΠΈΡ… ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½Ρ‹ Π² Π²Π΅Ρ‚ΠΊΠ΅ Git 3.0. Из Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² прСдстоящСм выпускС Git 3.0 отмСчаСтся ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π½Π° ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π½Π° основС Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° Ρ…ΡΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ SHA-256 ΠΏΡ€ΠΈ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π½ΠΎΠ²Ρ‹Ρ… Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠ΅Π² ΠΈ задСйствованиС Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° Β«reftableΒ» для хранСния Π² Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ ссылок Π½Π° Π²Π΅Ρ‚ΠΊΠΈ ΠΈ Ρ‚Π΅Π³ΠΈ (задСйствовано Π±Π»ΠΎΡ‡Π½ΠΎΠ΅ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ ΠΎΡ‚ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° JGit, ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ для хранСния ΠΎΡ‡Π΅Π½ΡŒ большого числа ссылок).

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: opennet.ru

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ