Какая из этих строк верна?
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 --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
git checkout [branch]
для большинства пользователей, приходящих на этот вопрос