Какая из этих строк верна?
git checkout 'another_branch'
Или
git checkout origin 'another_branch'
Или
git checkout origin/'another_branch'
И в чем разница между этими линиями?
git
github
version-control
gitlab
git-checkout
Беньямин Джафари
источник
источник
git checkout [branch]
для большинства пользователей, приходящих на этот вопросОтветы:
Если
another_branch
локально уже существует, и вы не в этой ветви, тоgit checkout another_branch
переключается на филиал.Если
another_branch
не существует, ноorigin/another_branch
существует, тоgit checkout another_branch
эквивалентноgit checkout -b another_branch origin/another_branch; git branch -u origin/another_branch
. Это для созданияanother_branch
изorigin/another_branch
и установитьorigin/another_branch
в качестве верхнего по течениюanother_branch
.Если ни один не существует,
git checkout another_branch
возвращает ошибку.git checkout origin another_branch
возвращает ошибку в большинстве случаев. Еслиorigin
это ревизия иanother_branch
файл, то он проверяет файл этой ревизии, но, скорее всего, это не то, что вы ожидаете.origin
в основном используется вgit fetch
,git pull
иgit push
как пульт дистанционного управления, псевдоним URL - адрес в удаленном хранилище.git checkout origin/another_branch
успешно, еслиorigin/another_branch
существует. Это приводит к тому, что он находится в отключенном состоянии HEAD, а не в какой-либо ветви. Если вы делаете новые коммиты, новые коммиты не доступны из существующих ветвей, и ни одна из ветвей не будет обновлена.ОБНОВЛЕНИЕ :
Начиная с версии 2.23.0, мы также можем использовать
git switch
для создания и переключения веток.Если
foo
существует, попробуйте переключиться наfoo
:Если
foo
не существует иorigin/foo
существует, попробуйте создатьfoo
из,origin/foo
а затем переключитесь наfoo
:В более общем случае, если
foo
он не существует, попробуйте создатьfoo
из известного ref или commit и затем переключитесь наfoo
:Если мы поддерживаем репозиторий в Gitlab и Github одновременно, локальный репозиторий может иметь два пульта, например,
origin
для Gitlab иgithub
для Github. В этом случае хранилище имеетorigin/foo
иgithub/foo
.git switch foo
будет жаловатьсяfatal: invalid reference: foo
, потому что не известно, из какого reforigin/foo
илиgithub/foo
, чтобы создатьfoo
. Мы должны указать это сgit switch -c foo origin/foo
или вgit switch -c foo github/foo
соответствии с необходимостью. Если мы хотим создать ветви из обеих удаленных веток, лучше использовать отличительные имена для новых ветвей:Если
foo
существует, попробуйте воссоздать / принудительно создатьfoo
(или сброситьfoo
) известный ref или commit, а затем переключиться наfoo
:которые эквивалентны:
Попробуйте переключиться на отдельный заголовок известного ref или commit:
Если вы просто хотите создать ветку, но не переключаться на нее, используйте
git branch
вместо этого. Попробуйте создать ветку из известного ref или commit:источник
git checkout
моему мнению, команда делает слишком много вещей. Вот почему здесь так много режимов работы. Если бы единственной вещьюgit checkout
было переключение ветвей, ответ был бы простым, но он также может создавать ветви и даже извлекать файлы из определенных коммитов без переключения ветвей.git switch
для переключения на ветку.git checkout
вместо старых версий, что также работает в современных версиях.Переключение на другую ветку в git. Простой ответ,
git-checkout - переключение веток или восстановление файлов рабочего дерева
Перед переключением ветки убедитесь, что у вас нет измененных файлов, в этом случае вы можете зафиксировать изменения или сохранить их.
источник
[
git checkout "branch_name"
]это еще один способ сказать:
[
git checkout -b branch_name origin/branch_name
]в случае, если "branch_name" существует только удаленно.
[
git checkout -b branch_name origin/branch_name
] полезно, если у вас несколько пультов.Что касается [
git checkout origin 'another_branch'
] Я не уверен, что это возможно, AFAK вы можете сделать это с помощью команды "fetch" - [git fetch origin 'another_branch'
]источник
С Git 2.23 можно использовать
git switch <branch name>
для переключения веток.источник
Что сработало для меня следующее:
источник
Полезные команды для работы в повседневной жизни:
источник
Если вы хотите, чтобы ветка отслеживала удаленную ветвь, что очень важно, если вы собираетесь фиксировать изменения в ветке и извлекать изменения и т. Д., Вам нужно использовать add -t для фактической проверки, например:
git checkout -t branchname
источник
Проверьте :
git branch -a
Если вы получаете только одну ветку. Затем выполните следующие шаги.
git config --list
git config --unset remote.origin.fetch
git config --add remote.origin.fetch +refs/heads/*:refs/remotes/origin/*
источник
depth
параметр) и теперь удивляетесь, почему вы не можете получить другие удаленные ветви,error: pathspec 'another_branch' did not match any file(s) known to git
используя команды, предложенные выше. Это, конечно, не то, о чем был первоначальный вопрос, но это может помочь другим почесать здесь свои головы.Я использую это для переключения одной ветви на другую, кого вы можете использовать, это работает для меня как шарм.
git switch [branchName] ИЛИ git checkout [branchName]
Пример: разработка git switch ИЛИ разработка
git checkout
источник