Почему команда git для переключения ветвей с именем git checkout
?
Это действительно имеет смысл?
Я бы назвал его git switch
. Кроме того, git checkout
имеет другие значения: например. возврат файла (например, svn revert
)
Почему команда git для переключения ветвей с именем git checkout
?
Это действительно имеет смысл?
Я бы назвал его git switch
. Кроме того, git checkout
имеет другие значения: например. возврат файла (например, svn revert
)
Я вижу, что большинство других ответов объясняют, что делает git checkout
и почему "проверка" может быть разумным способом описать это. Однако, хотя я очень люблю git, это затрагивает два серьезных момента разочарования, которые возникают, когда я пытаюсь помочь людям понять систему:
git checkout
выполняет две очень разные вещи, и для новичков было бы полезно, если бы они были отдельными командами.
Циник может предположить, что терминология git была преднамеренно выбрана, чтобы запутать людей, поступающих из CVS и Subversion! Один из замечаний (checkout
) - отличный пример. Другим является commit
, который является полностью локальным в git и полностью зависит от сервера в CVS/SVN - терминология darcs "record" потребовала бы меньшего количества обучения для людей, новых для git. Другим примером, который мне нравится, является сообщение "нуждается в обновлении", которое вы видите в git, что на самом деле означает , которое необходимо выполнить:)
Конечно, всегда можно использовать другой интерфейс с git, например easy git, iolaus и т.д., но большинству людей все равно придется изучать стандартные команды, поэтому вам просто нужно привыкнуть, чтобы некоторые из них были названы скорее на удивление.
Я уверен, что есть исторические причины для названий этих различных команд в git, но было бы полезно, если бы были выбраны разные слова...
Обновите: VonC ссылки в комментариях к ответу с аккуратным псевдонимом, чтобы сделать git checkout
более безопасным в любом из двух его применений;)
Это хорошее имя, потому что, проверяя ветку, вы просите репозиторий дать вам (как если бы "проверка" книг из библиотеки) все соответствующие файлы в их последних состояниях ревизий в этой ветке в качестве вашей рабочей копия.
На самом деле проблема git checkout
в том, что здесь есть "другие значения". Команда дает вам отдельный файл или набор файлов (read: "ветвь" ) в состоянии проверки X. Если вы считаете, что "возврат" или нет, то большая точка, которая заключается в том, что git checkout
является гибкой и немного Генеральная. В обоих случаях он проверяет некоторое количество состояний из репозитория и устанавливает его как свою рабочую копию, готовый к редактированию.
Поскольку команда может использоваться для выполнения двух действий, она "имеет смысл использовать ключевое слово" checkout ".
Два действия:
Вы также можете использовать аргумент "-", если хотите отличать идентификатор фиксации от имени ветки
checkout
относится к обновлению файла в рабочем дереве.
Возвращение также означает обновление файла в рабочем дереве до его предыдущего фиксации.
Поэтому в моем смысле более реалистично иметь одну команду для обновления или возврата с помощью git checkout
.
Я бы назвал это git switch.
В Git 2.23 (август 2019 г.) вам больше не нужно вводить в заблуждение команду git checkout
.
Вместо этого вы можете использовать git switch
, как вы и предлагали, восемь лет назад.
Если вам нужно обновить рабочее дерево (без переключения веток), за это отвечает новая команда git restore
.
Смотрите больше наОсновные моменты из Git 2.23"от Тейлор Блау.