Какая из этих строк правильная?
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, а не в какой-либо ветки. Если вы делаете новые коммиты, новые коммиты не будут доступны из существующих ветвей, и ни одна из ветвей не будет обновлена.
UPDATE:
Начиная с версии 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, потому что не известно, из какой ссылки 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 в) известный реф или коммит, а затем переключиться на foo:
git switch -C foo <ref>
git switch -C foo <commit>
что эквивалентно:
git switch foo
git reset [<ref>|<commit>] --hard
Попробуйте переключиться на отдельную ГОЛОВУ известного реф или коммита:
git switch -d <ref>
git switch -d <commit>
Если вы просто хотите создать ветку, но не переключаться на нее, используйте вместо нее git branch. Попробуйте создать ветку из известного ref или commit:
git branch foo <ref>
git branch foo <commit>
Переход на другую ветку в 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 branch -a
Если вы получаете только одну ветку. Затем выполните шаги ниже.
git config --listgit config --unset remote.origin.fetchgit config --add remote.origin.fetch +refs/heads/*:refs/remotes/origin/*Если вы хотите, чтобы ветвь отслеживала удаленную ветвь, что очень важно, если вы собираетесь фиксировать изменения в ветке и извлекать изменения и т.д., Вам нужно добавить add -t для фактической проверки, например:
git checkout -t branchname
С Git 2.23 и далее можно использовать git switch <branch name> для переключения веток.
Для меня сработало следующее:
Переключитесь на нужную ветку:
git checkout -b BranchName
А потом я вытащил "мастера" по:
git pull origin master