«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
, сейчас самое время переключиться!