Почему команда git для переключения веток называется git checkout? - PullRequest
15 голосов
/ 09 марта 2011

Почему команда git для переключения веток называется git checkout?
Имеет ли это смысл?

Я бы назвал это git switch.Кроме того, git checkout имеет и другие значения: например, возврат файла (например, svn revert)

Ответы [ 4 ]

13 голосов
/ 09 марта 2011

Я вижу, что большинство других ответов объясняют, что делает git checkout и почему «оформить заказ» может быть разумным способом описать это.Однако, хотя я очень люблю git, это затрагивает две серьезные проблемы, которые возникают, когда я пытаюсь помочь людям понять систему:

  1. git checkout делает две оченьотдельные вещи, и для новичков было бы полезно, если бы они были отдельными командами.

  2. Циник мог бы предположить, что терминология git была специально выбрана, чтобы сбить людей с толку CVS и Subversion!Тот, который вы упомянули (checkout), является отличным примером.Другой - commit, который является полностью локальным в git и полностью зависит от сервера в CVS / SVN - терминология darcs «запись» потребовала бы меньше необучения для новичков в git.Другой пример, который мне нравится, это сообщение «Нужно обновить», которое вы видите в git, что на самом деле означает, что «нужно зафиксировать» :)

Конечно,всегда можно использовать другой внешний интерфейс для git, такой как easy git , iolaus и т. д., но в любом случае большинству людей в конечном итоге придется выучить стандартные команды, так что вы просточтобы привыкнуть к тому, что некоторые из них названы довольно удивительно.

Я уверен, что есть исторические причины для названий этих различных команд в git, но было бы полезно, если бы были выбраны другие слова ...


Обновление: VonC ссылки в комментариях к ответ с аккуратным псевдонимом, чтобы git checkout безопаснее в любом из нихиз двух его применений;)

6 голосов
/ 09 марта 2011

Это хорошее имя, потому что при проверке ветки вы просите репозиторий предоставить вам (как будто "извлекает" книги из библиотеки) все соответствующие файлы в их последних состояниях ревизии в этой ветке как вашу работу копия.

На самом деле не существует проблемы с git checkout, имеющей здесь "другие значения". Команда дает вам отдельный файл или набор файлов (читай: «ветвь») в состояние ревизии X . Считаете ли вы, что «возвращение» или нет, пропущено большее замечание: git checkout является гибким и немного общим. В обоих случаях извлекает некоторое количество состояния из хранилища и устанавливает его в качестве рабочей копии, готовой к редактированию.

1 голос
/ 09 марта 2011

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

1 голос
/ 09 марта 2011

Поскольку команду можно использовать для выполнения двух действий, имеет смысл использовать ключевое слово «checkout».

Два действия:

  • Сброс изменений вфайл с идентификатором предыдущего коммита
  • Переключение на ветку

Вы также можете использовать аргумент '-', если хотите отличить идентификатор коммита от имени ветви

...