Какая из этих строк верна?
git checkout 'another_branch'
Или
git checkout origin 'another_branch'
Или
git checkout origin/'another_branch'
git checkout 'another_branch'
Или
git checkout origin 'another_branch'
Или
git checkout origin/'another_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:
git switch foo
Если fooне существует и origin/fooсуществует, попробуйте создать fooиз, origin/fooа затем переключитесь на foo:
git switch -c foo origin/foo
# or simply
git switch foo
В более общем случае, если fooон не существует, попробуйте создать fooиз известного ref или commit и затем переключитесь на foo:
git switch -c foo <ref>
git switch -c foo <commit>
Если мы поддерживаем репозиторий в Gitlab и Github одновременно, локальный репозиторий может иметь два пульта, например, originдля Gitlab и githubдля Github. В этом случае хранилище имеет origin/fooи github/foo. git switch fooбудет жаловаться fatal: invalid reference: foo, потому что не известно, из какого ref origin/fooили github/foo, чтобы создать foo. Мы должны указать это с git switch -c foo origin/fooили в git switch -c foo github/fooсоответствии с необходимостью. Если мы хотим создать ветви из обеих удаленных веток, лучше использовать отличительные имена для новых ветвей:
git switch -c gitlab_foo origin/foo
git switch -c github_foo github/foo
Если fooсуществует, попробуйте воссоздать / принудительно создать foo(или сбросить foo) известный ref или commit, а затем переключиться на foo:
git switch -C foo <ref>
git switch -C foo <commit>
которые эквивалентны:
git switch foo
git reset [<ref>|<commit>] --hard
Попробуйте переключиться на отдельный заголовок известного ref или commit:
git switch -d <ref>
git switch -d <commit>
Если вы просто хотите создать ветку, но не переключаться на нее, используйте git branchвместо этого. Попробуйте создать ветку из известного ref или commit:
git branch foo <ref>
git branch foo <commit>
git checkoutмоему мнению, команда делает слишком много вещей. Вот почему здесь так много режимов работы. Если бы единственной вещью git checkoutбыло переключение ветвей, ответ был бы простым, но он также может создавать ветви и даже извлекать файлы из определенных коммитов без переключения ветвей.
git switchдля переключения на ветку.
git checkoutвместо старых версий, что также работает в современных версиях.
Переключение на другую ветку в git. Простой ответ,
git-checkout - переключение веток или восстановление файлов рабочего дерева
git fetch origin <----this will fetch the branch
git checkout branch_name <--- Switching the branch
Перед переключением ветки убедитесь, что у вас нет измененных файлов, в этом случае вы можете зафиксировать изменения или сохранить их.
[ 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 checkout -b BranchName
И тогда я вытащил «мастера» по:
git pull origin master
Полезные команды для работы в повседневной жизни:
git checkout -b "branchname" -> creates new branch
git branch -> lists all branches
git checkout "branchname" -> switches to your branch
git push origin "branchname" -> Pushes to your branch
git add */filename -> Stages *(All files) or by given file name
git commit -m "commit message" -> Commits staged files
git push -> Pushes to your current branch
Если вы хотите, чтобы ветка отслеживала удаленную ветвь, что очень важно, если вы собираетесь фиксировать изменения в ветке и извлекать изменения и т. Д., Вам нужно использовать add -t для фактической проверки, например:
git checkout -t branchname
Проверьте : git branch -a
Если вы получаете только одну ветку. Затем выполните следующие шаги.
git config --listgit 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
git checkout [branch]для большинства пользователей, приходящих на этот вопрос