Какая из этих строк правильная?
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 --list
git config --unset remote.origin.fetch
git 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