Git получить удаленную ветку - PullRequest
1943 голосов
/ 02 марта 2012

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

Однако у меня есть branch. У меня вопрос, как мой коллега может специально тянуть эту ветку?

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

Кроме того, когда я изначально делал ветку, я делал -b checkout. Не уверен, что это имеет большое значение?

$ git branch -r
origin/HEAD -> origin/master
origin/daves_branch
origin/discover
origin/master

$ git fetch origin discover
$ git checkout discover

Это команды, которые я выполнил. Но это определенно не работает.

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

Ответы [ 29 ]

3 голосов
/ 26 декабря 2013

Шаги следующие:

  1. git fetch origin или git fetch --all, это приведет к извлечению всех удаленных веток в ваше локальное пространство, а затем ко второму варианту, который вы можете выполнить.

  2. git checkout --track origin/<The_remote_branch you want to switch over>

Затем поработайте над этой веткой, и вы можете проверить, находитесь ли вы в этой ветке или нет, набрав

git branch

Отображает ветку, в которой вы находитесь.

3 голосов
/ 26 июня 2015

Если вы уже знаете свою удаленную ветку, например, так ...

git remote
=> One
=> Two

и знаете название ветви, которую вы хотите оформить, например. br1.2.3.4 , затем выполните

git fetch One
=> returns all meta data of remote i.e. the branch name in question.

. Осталось только проверить ветку

git checkout br.1.2.3.4

Затем сделать из нее новые ветви.1012 *

2 голосов
/ 25 января 2018

Если у вас есть репозиторий, который был клонирован с --depth 1, то многие из перечисленных команд не будут работать.Например, см. Здесь

% git clone --depth 1 https://github.com/repo/code
Cloning into 'code'...
cd code
remote: Counting objects: 1778, done.
remote: Compressing objects: 100% (1105/1105), done.
remote: Total 1778 (delta 87), reused 1390 (delta 58), pack-reused 0
Receiving objects: 100% (1778/1778), 5.54 MiB | 4.33 MiB/s, done.
Resolving deltas: 100% (87/87), done.
Checking connectivity... done.
Checking out files: 100% (1215/1215), done.
% cd code
% git checkout other_branch
error: pathspec 'other_branch' did not match any file(s) known to git.
% git fetch origin other_branch
remote: Counting objects: 47289, done.
remote: Compressing objects: 100% (15906/15906), done.
remote: Total 47289 (delta 30151), reused 46699 (delta 29570), pack-reused 0
Receiving objects: 100% (47289/47289), 31.03 MiB | 5.70 MiB/s, done.
Resolving deltas: 100% (30151/30151), completed with 362 local objects.
From https://github.com/repo/code
 * branch            other_branch-> FETCH_HEAD
% git checkout other_branch
error: pathspec 'other_branch' did not match any file(s) known to git.
%

В этом случае я бы отменил репо, но, возможно, существуют другие методы, например git shallow clone (clone --depth) пропускает удаленные ветви

2 голосов
/ 01 февраля 2017

Проверьте .git/config, в частности, какое отслеживание присутствует на выборке для этого пульта.

[remote "randomRemote"]
    url = git@github.com:someUser/someRepo.git
    fetch = +refs/heads/*:refs/remotes/randomRemote/*

Если он имеет heads/*, указывающий на randomRemote/*, при запускеgit fetch randomRemote, он выберет все ветви.Тогда вы можете просто оформить эту ветку.

В противном случае,

  1. Вам необходимо добавить удаленные ветви в трекинг, используя это.Проверьте ваш .git/config после запуска этого.Ты поймешь. git remote set-ветки --add randomRemote randomBranch

  2. Выполнить git fetch randomRemote.Это приведет к удаленной ветке.

  3. Теперь вы можете запустить git checkout randomBranch

1 голос
/ 12 июня 2019

, если вы хотите получить все удаленные ветки, просто наберите

git fetch --all

Надеюсь, это поможет кому-то еще увидеть все удаленные ветви.

1 голос
/ 23 мая 2013

Вы используете 'git pull', чтобы отделить ветки. Я буду использовать реальные имена репо и веток, чтобы помочь, поскольку «lbranch» и «rbranch» трудно расшифровать.

Давайте использовать:

myteam.unfuddle.com = удаленный сервер git tlc = развернуть учетную запись проекта, в которой существует репо daves_branch = имя удаленной ветви

Вы или любой коллега можете запустить это, чтобы вытянуть только вашу ветку, независимо от того, сколько существует ветвей:

1 голос
/ 11 марта 2018

git branch <name> --track origin/<name>

0 голосов
/ 19 января 2018

Простая команда - "git checkout remote_branch_name" поможет вам создать локальную ветку, в которой есть все изменения в удаленной ветке.

0 голосов
/ 22 января 2019
git checkout -b branch_name
git pull remote_name branch_name
...