it-swarm.com.ru

Как я могу переключиться на другую ветку в git?

Какая из этих строк верна?

git checkout 'another_branch'

или

git checkout Origin 'another_branch'

или

git checkout Origin/'another_branch'

И в чем разница между этими линиями?


102
Benyamin Jafari

Если 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, а не в какой-либо ветви. Если вы делаете новые коммиты, новые коммиты не доступны из существующих ветвей, и ни одна из ветвей не будет обновлена.

98
ElpieKay

Переключение на другую ветку в git. Простой ответ,

git-checkout - переключение веток или восстановление файлов рабочего дерева

git fetch Origin         <----this will fetch the branch
git checkout branch_name <--- Switching the branch

Прежде чем переключать ветку, убедитесь, что у вас нет измененных файлов, в этом случае вы можете зафиксировать изменения или сохранить их.

37
danglingpointer

[git checkout "branch_name"]

это еще один способ сказать:

[git checkout -b branch_name Origin/branch_name]

в случае, если "имя_ветвления" существует только удаленно.

[git checkout -b branch_name Origin/branch_name] полезен, если у вас есть несколько пультов.

Что касается [git checkout Origin 'another_branch'] Я не уверен, что это возможно, AFAK вы можете сделать это с помощью команды "fetch" ​​- [git fetch Origin 'another_branch']

8
Mehdi

Проверить: git branch -a

Если вы получаете только одну ветку. Затем выполните следующие шаги.

  • Шаг 1: git config --list
  • Шаг 2: git config --unset remote.Origin.fetch
  • Шаг 3: git config --add remote.Origin.fetch +refs/heads/*:refs/remotes/Origin/*
2
pavan

Если вы хотите, чтобы ветвь отслеживала удаленную ветвь, что очень важно, если вы собираетесь фиксировать изменения в ветке и извлекать изменения и т.д., Вам нужно использовать add -t для фактической проверки, например: git checkout -t branchname

2
Matthew Joughin