Выпуск размеркаванай сістэмы кіравання зыходнымі тэкстамі Git 2.23

Прадстаўлены выпуск размеркаванай сістэмы кіравання зыходнымі тэкстамі Git 2.23.0. Git з'яўляецца адной з самых папулярных, надзейных і высокапрадукцыйных сістэм кіравання версіямі, якая прадстаўляе гнуткія сродкі нелінейнай распрацоўкі, якія базуюцца на адгалінаванні і зліцці галінак. Для забеспячэння цэласнасці гісторыі і ўстойлівасці да змен заднім лікам выкарыстоўваюцца няяўнае хэшаванне ўсёй папярэдняй гісторыі ў кожным коміце, таксама магчыма пасведчанне лічбавымі подпісамі распрацоўнікаў асобных тэгаў і коммітаў.

У параўнанні з мінулым выпускам у новую версію прынята 505 змен, падрыхтаваных пры ўдзеле 77 распрацоўшчыкаў, з якіх 26 упершыню прынялі ўдзел у распрацоўцы. Асноўныя навіны:

  • Прадстаўлены эксперыментальныя каманды "git switch" і "git restore", закліканыя падзяліць паміж сабой малазлучаныя магчымасці "git checkout", такія як маніпуляцыя галінкамі (пераключэнне і стварэнне) і аднаўленне файлаў у працоўнай дырэкторыі ("git checkout $commit - $filename") ці адразу ў staging area («-staging», не мае аналогу ў «git checkout»). Варта адзначыць, што, у адрозненне ад "git checkout", "git restore" выдаляе неадсочваныя файлы з аднаўляльных дырэкторый ("-no-overlay" па змаўчанні).
  • Дададзена опцыя "git merge -quit", якая, аналагічна "-abort", спыняе працэс зліцця галінак, але пакідае пры гэтым працоўную дырэкторыю некранутай. Дадзеная опцыя можа апынуцца карыснай у выпадку, калі некаторыя са змен, занесеных падчас ручнога зліцця, пераважней аформіць у выглядзе асобнага комміта.
  • Каманды "git clone", "git fetch" і "git push" зараз улічваюць наяўнасць коммітаў у злучаных рэпазітарах (альтэрнатывы);
  • Дададзены опцыі "git blame -ignore-rev" і "-ignore-revs-file", якія дазваляюць прапусціць коміты, у якіх унесены нязначныя праўкі (напрыклад, выпраўленні фарматавання);
  • Дададзена опцыя "git cherry-pick -skip" для пропуску канфліктнага комміта (запамінальны аналаг паслядоўнасці "git reset && git cherry-pick -continue");
  • Дададзена налада status.aheadBehind, якая фіксуе опцыю "git status -[no-]ahead-behind" на пастаяннай аснове;
  • З дадзенага выпуску "git log" па змаўчанні ўлічвае змены, унесеныя mailmap, аналагічна таму, як гэта ўжо адбываецца ў git shortlog;
  • Істотна паскорана аперацыя абнаўлення прадстаўленага ў 2.18 эксперыментальнага кэша графа коммітаў (core.commitGraph). Таксама паскораны git for-each-ref у выпадку выкарыстання некалькіх шаблонаў і скарочана колькасць выклікаў auto-gc у "git fetch -multiple";
  • "git branch -list" зараз заўсёды паказвае detached HEAD у самым пачатку спісу незалежна ад лакалі.

Крыніца: opennet.ru

Дадаць каментар