2009-09-27 2 views
3

У меня есть git repo в GitHub. В основном я использую git gui, чтобы управлять им до сих пор, но теперь я начинаю использовать оболочку. Я хочу знать, как получить все ветви на удаленном компьютере и объединить их в соответствующие ветви на моем локальном репо? Например, если у меня есть филиалы master и development, и, таким образом, origin/master и origin/development, я хочу принести origin/master и объединить его в master и принести origin/development и объединить его в development.На самом деле потянув с git

Есть ли команда, которая делает это?

ответ

1

Чтобы получить список местных отделений:

$ git branch 
* master 

список доступных удаленных филиалов:

$ git branch -r 
* master 
    branch1 
    branch2 

Теперь это становится интересно, чтобы отслеживать удаленный branch1 :

$ git branch --track branch1 

Это e nables pull, чтобы также обновить ветвь локально.

Просто перейти на новую ветвь с:

$ git checkout branch1 

С помощью параметра --track, удаленные ветви добавляются к .git/конфигурации и становятся постоянными. т.е. это нужно сделать только один раз. Соответствующие записи.мерзавец/конфигурация будет отображаться как это:

branch.master.remote=origin 
branch.master.merge=refs/heads/master 
branch.branch1.remote=origin 
branch.branch1.merge=refs/heads/branch1 

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

4

Существует не одна команда, которая будет извлекать и объединять все ветви одновременно. git pull Команда:

Запускает ГИТ-выборки с заданными параметрами, и вызывает ГИТ-слияние объединить найденную голову (ы) в текущей ветке.

Таким образом, он работает только с текущей веткой. Это необходимо, потому что вам нужно иметь возможность справляться с конфликтами, когда они возникают.

0

Если вы знаете имена филиалов в вопросе, вы можете установить это так, это происходит на

git pull 

путем редактирования файла .git/конфигурации.

См

man git-pull 

для получения более подробной информации: (клонирован из человека мерзавец тянуть ниже)

o Command line pull of multiple branches from one repository: 

      $ git checkout master 
      $ git fetch origin +pu:pu maint:tmp 
      $ git pull . tmp 

     This updates (or creates, as necessary) branches pu and tmp in the 
     local repository by fetching from the branches (respectively) pu 
     and maint from the remote repository. 

     The pu branch will be updated even if it is does not fast-forward; 
     the others will not be. 
+0

Вы можете сделать это для 'git push', но можете ли вы сделать то же самое для' git pull'? –

+0

Вид. Вы можете сказать, чтобы он извлекал и обновлял все удаленные ветви отслеживания и вытаскивал текущую ветку. Другие ветви, которые у вас есть, должны быть вручную объединены. Обратите внимание, что притяжение ветви, разветвленной от удаленной ветви отслеживания, будет сливаться с удаленной веткой отслеживания. –

+0

И страница с претензиями на человека может также помочь вам в реальной сделке. Я обновил сообщение. –

0

Вставьте следующий файл с именем выдвижная всего:

#!/bin/bash 
git fetch origin 
git checkout development 
git merge origin/development 
git checkout master 
git merge origin/master 

Затем дайте все исполняемые разрешения pull-all и поместите их в каталог на вашем пути. Как правило, $ HOME/bin:

chmod +x pull-all 
mv pull-all $HOME/bin 
+0

Это может потребоваться ручное вмешательство, если есть какие-либо конфликты в слиянии, которые невозможно автоматически разрешить. –

+0

Проблема с этим - мне придется модифицировать это каждый раз, когда я добавляю новые ветви. –

Смежные вопросы