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 ]

13 голосов
/ 05 декабря 2013
git fetch

git branch -r

git checkout <branch_name>
13 голосов
/ 25 марта 2015

Вы также можете извлечь и оформить удаленную ветку за один снимок: -

git fetch && git checkout the-branch-name
11 голосов
/ 17 октября 2013

Я набрал

git checkout <branch_name>

и получил

Branch <branch_name> set up to track remote branch <branch_name> from origin.
Switched to a new branch '<branch_name>'
9 голосов
/ 06 февраля 2015

Временами вас просят не возиться с основной веткой и работать только с удаленной веткой (как меня просили). Так что все, что вам нужно, это удаленная ветвь.

Чтобы клонировать удаленную ветку в одиночку (без мастера), сделайте это

git clone url --branch remote_branch_name

, где, remote_branch_name - имя удаленной ветви

Например,

git clone git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git --branch v3.15

Это обеспечит клонирование удаленной ветви в локальную ветвь с именем удаленной ветви.

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

7 голосов
/ 06 марта 2018

Предположим, что ваш пульт - git@xyz.git, и вам нужна его ветка random_branch.Процесс должен быть следующим:

  1. Сначала проверьте список ваших пультов по

    git remote -v

  2. Если в выводе вышеприведенной команды нет пульта git@xyz.git, вы бы добавили его:

    git remote add xyz git@xyz.git

  3. Теперь вы можете получить содержимое этого пульта с помощью

    git fetch xyz

  4. Теперь проверьте ветку этого пульта с помощью

    git checkout -b my_copy_random_branch xyz/random_branch

  5. Проверьте список ветвлений с помощью

    git branch -a

Локальная ветка my_copy_random_branch будет отслеживать random_branchфилиал вашего пульта.

7 голосов
/ 20 ноября 2017

git fetch --all & git checkout <branch name>

7 голосов
/ 11 апреля 2019

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

git fetch origin
git checkout branchName

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

git branch -r

.удаленный филиал к вашему локальному и будет автоматически отслеживать удаленный.

6 голосов
/ 15 марта 2019

Я хочу дать вам команду oneliner для извлечения всех удаленных веток в ваш локальный и переключения на желаемую недавно созданную локальную ветвь:

git fetch && git checkout discover

после выполнения вышеуказанной команды вы получите следующее сообщение:

Switched to a new branch 'discover'
Branch discover set up to track remote branch discover from origin.

в первой строке указано, что переключился на Новая ветка - почему новая? это уже есть в удаленном!

Но на самом деле вы также должны создавать его локально, ветка берется из удаленного индекса и создается локально для вас.

Здесь discover - это новая ветвь, созданная из удаленной ветки вашего репозитория discover.

Но вторая строка 1022 * дает больше информации, чем первая, которая сообщает нам, что:

наш филиал настроен на трек удаленного филиала с тем же именем.

Хотя git fetch извлекает все ветки в локальную Но если вы запустите git branch после нее, вы увидите только master ветку в локальной почему ?

потому что для каждой удаленной ветви вы должны также создать ее локально, чтобы отслеживать ее как git checkout <branchname>, как мы делали в примере выше.

после выполнения команды git checkout вы можете запустить git branch, теперь вы можете увидеть обе ветви:

  1. мастер и 2. найти в вашем местном списке.
6 голосов
/ 12 декабря 2017

просто попробуйте

$ git pull origin your_branch_name

6 голосов
/ 25 апреля 2018

git fetch && git checkout <your friend's branch name> должен сделать трюк

...