Вопрос: Как проверить удаленную ветку Git?


Кто-то нажал на ветку testс git push origin testв общий репозиторий. Я вижу ветку с git branch -r,

Теперь я пытаюсь проверить удаленный testфилиал.

Я пробовал:

  • git checkout testкоторый ничего не делает

  • git checkout origin/testдает * (no branch), Это сбивает с толку. Как я могу быть на «никакой ветке»?

Как проверить удаленную ветку Git?


5197


источник


Ответы:


Обновить

Ответ Якуба на самом деле улучшает это. С версиями Git ≥ 1.6.6 вы можете просто сделать:

git fetch
git checkout test

(Пользователь masukomi указывает ниже, что git checkout testне будет работать в современных git, если у вас несколько пультов. В этом случае используйте git checkout -b test <name of remote>/test).

Старый ответ

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

Чтобы получить ветку, вам просто нужно:

git fetch origin

Это позволит получить все удаленные ветви для вас. Вы можете увидеть филиалы, доступные для оформления заказа, с помощью:

git branch -v -a

С удаленными ветвями в руке вам нужно проверить интересующую вас ветку, предоставив вам локальную рабочую копию:

git checkout -b test origin/test

7221



Примечание: С современным Git (> = 1.6.6 ), вы можете использовать только

git checkout test

(обратите внимание, что это «тест» не «происхождение / тест») для выполнения магических DWIM -mery и создать для вас локальный тест «test», для которого восходящий поток будет иметь «источник / тест» удаленного отслеживания.


* (no branch)в git branchвывод означает, что вы находитесь в неназванной ветви, в так называемом состоянии «отдельно стоящий HEAD» (HEAD указывает непосредственно на фиксацию и не является символической ссылкой на некоторую локальную ветвь). Если вы сделали некоторые коммиты в этой неназванной ветви, вы всегда можете создать локальную ветку с текущей фиксацией:

git checkout -b test HEAD

1074



В этом случае вы, вероятно, хотите создать локальный testветвь, которая отслеживает удаленный testфилиал:

$ git branch test origin/test

В более ранних версиях git, вам понадобился явный --track, но это значение по умолчанию теперь, когда вы разветвляете удаленную ветку.


469



Принятый ответ не работает для вас?

Хотя первый и выбранный ответ технически верный , есть возможность, что вы еще не получили все объекты и ссылки из удаленного репозитория. Если это так, вы получите следующую ошибку:

$ git checkout -b remote_branch origin/remote_branch

fatal: git checkout: обновление путей несовместимо с коммутационными ветвями.
Вы намерены проверить «origin / remote_branch», который не может быть разрешен как фиксация?

Решение

Если вы получили это сообщение, вы должны сначала сделать git fetch originгде originимя удаленного хранилища перед запуском git checkout remote_branch, Вот полный пример с ответами:

$ git fetch origin
remote: Counting objects: 140, done.
remote: Compressing objects: 100% (30/30), done.
remote: Total 69 (delta 36), reused 66 (delta 33)
Unpacking objects: 100% (69/69), done.
From https://github.com/githubuser/repo-name
   e6ef1e0..5029161  develop    -> origin/develop
 * [new branch]      demo       -> origin/demo
   d80f8d7..359eab0  master     -> origin/master

$ git checkout demo
Branch demo set up to track remote branch demo from origin.
Switched to a new branch 'demo'

Как видите, работает git fetch originбыли удалены любые удаленные филиалы, которые мы еще не установили для отслеживания на нашей локальной машине. Оттуда, так как теперь у нас есть ссылка на удаленную ветку, мы можем просто запустить git checkout remote_branchи мы получим преимущества дистанционного отслеживания.


381



I tried the above solution, but it didn't work. Try this, it works:

git fetch origin 'remote_branch':'local_branch_name'

This will fetch the remote branch and create a new local branch (if not exists already) with name local_branch_name and track the remote one in it.


171



This will DWIM for a remote not named origin (documentation):

$ git checkout -t remote_name/remote_branch

To add a new remote, you will need to do the following first:

$ git remote add remote_name location_of_remote
$ git fetch remote_name

The first tells Git the remote exists, the second gets the commits.


98



Use:

git checkout -b <BRANCH-NAME> <REMOTE-NAME>/<BRANCH-NAME>

Other answers do not work with modern Git in my benign case. You might need to pull first if the remote branch is new, but I haven't checked that case.


88



To clone a Git repository, do:

git clone <either ssh url /http url>

The above command checks out all of the branches, but only the master branch will be initialized. If you want to checkout the other branches, do:

git checkout -t origin/future_branch (for example)

This command checks out the remote branch, and your local branch name will be same as the remote branch.

If you want to override your local branch name on checkout:

git checkout -t -b enhancement origin/future_branch

Now your local branch name is enhancement, but your remote branch name is future_branch.

Documentation


44



OK, the answer is easy... You basically see the branch, but you don't have a local copy yet...

You need to fetch the branch...

You can simply fetch and then checkout to the branch, use the one line command below to do that:

git fetch && git checkout test

I also created the image below for you to share the differences, look at how fetch works and also how it's different to pull:

git fetch


35



You can try

git fetch remote
git checkout --track -b local_branch_name origin/branch_name

or

git fetch
git checkout -b local_branch_name origin/branch_name

27