«Git switch» и «git restore» никуда не денутся

Git — наиболее широко используемая система контроля версий для разработчиков. Одна из наиболее часто используемых команд Git — git checkout, которая позволяет пользователям переключаться между ветвями и восстанавливать файлы до предыдущего момента.

Однако в 2019 году с выпуском Git 2.23 были представлены две новые команды, заменяющие git checkout для более интуитивно понятного и оптимизированного рабочего процесса: git switch и git restore. Несмотря на то, что он был выпущен почти 4 года назад, разработчики не спешили отказываться от использования git checkout (я полагаю, старые привычки с трудом умирают).

В этой статье мы рассмотрим, какие недостатки git checkout команда Git пыталась решить, представив git switch и git restore, и почему это должно привести к прекращению использования git checkout.

Проблема с git checkout

git checkout — это команда с двумя основными функциями:

  • переключение между ветвями
  • восстановление файлов в предыдущее состояние

Однако эти две функции не имеют четкого различия в синтаксисе команд, что может привести к путанице и ошибкам. Например, если вы случайно наберете git checkout <commit> вместо git checkout <branch>, вы окажетесь в так называемом состоянии «detached HEAD», что означает, что любые ваши новые коммиты не будут связаны ни с одной веткой. Это может быть особенно проблематично при переключении на новую ветку после того, как вы внесли изменения в отсоединенный HEAD, не зафиксировав их, так как эти изменения будут потеряны, и их невозможно будет восстановить.

Представляем git switch и git restore

В попытке смягчить эти проблемы с помощью git checkout команда Git представила две новые команды в Git версии 2.23: git switch и git restore. Эти команды разделяют ранее упомянутые две основные функции git checkout на две отдельные команды.

git switch можно использовать только для переключения между ветвями. Синтаксис прост: git switch <branch>. Если вы попытаетесь использовать git switch для переключения на фиксацию, Git выдаст ошибку, а не переведет вас в состояние detached HEAD. Поэтому маловероятно, что вы сможете делать коммиты, не связанные с какой-либо веткой.

git restore, с другой стороны, может использоваться исключительно для восстановления файла до предыдущего состояния. Его синтаксис также прост: git restore <file>. Если вы случайно попытаетесь переключиться на ветку вместо файла, Git выдаст ошибку.

Преимущества использования git switch и git restore

Одним из ключевых преимуществ git switch и git restore является повышенная безопасность. Поскольку две функции разделены на две разные команды, вероятность того, что вы непреднамеренно примените неправильную функцию, уменьшается. Это приводит к ошибкам и разочарованию, потому что вы теряете работу с меньшей вероятностью.

Еще одно преимущество git switch и git restore заключается в том, что их синтаксис более прост, поскольку вам не нужно запоминать различные применения git checkout. Даже после многих лет использования Git многие разработчики все еще не могут полностью понять работу и синтаксис git checkout.

Кроме того, команды git switch и git restore более интуитивно понятны и точны. Если вы хотите создать новую ветку, вы можете использовать git switch -c <branch> с флагом -c для создать. При использовании проверки вы должны использовать git checkout -b <branch> с флагом -b, обозначающим ветку . Однако вы также можете использовать git checkout <branch> для переключения между ветвями, поэтому флаг -b предназначен исключительно для создания новой ветки, но флаг с именем ветка не очень полезен, чтобы указать, что она о создании, а не о переходе на существующий. Следовательно, команды git switch и git restore более интуитивны, и поэтому им следует отдавать предпочтение.

Заключение

В то время как git checkout была популярной командой для пользователей Git в течение многих лет, с появлением git switch и git checkout в течение нескольких лет появились лучшие альтернативы. Разделив две основные функции git checkout на две отдельные команды, Git упростил переключение между ветвями и восстановление файлов без случайного использования неправильной команды. Если вы все еще используете git checkout, а не git switch и git restore, сейчас самое время переключиться!

Ресурсы