Подтвердить что ты не робот

Почему команда git для переключения ветвей с именем "git checkout"?

Почему команда git для переключения ветвей с именем git checkout?
Это действительно имеет смысл?

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

4b9b3361

Ответ 1

Я вижу, что большинство других ответов объясняют, что делает 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 более безопасным в любом из двух его применений;)

Ответ 2

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

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

Ответ 3

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

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

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

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

Ответ 4

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

Ответ 5

  Я бы назвал это git switch.

В Git 2.23 (август 2019 г.) вам больше не нужно вводить в заблуждение команду git checkout.

Вместо этого вы можете использовать git switch, как вы и предлагали, восемь лет назад.

Если вам нужно обновить рабочее дерево (без переключения веток), за это отвечает новая команда git restore.

Смотрите больше наОсновные моменты из Git 2.23"от Тейлор Блау.