Фактически вытягивание с помощью git

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

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

Ответ 1

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

$ git branch
*  master

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

$ git branch -r
* master
  branch1
  branch2

Теперь становится интересным, Чтобы отслеживать удаленную ветку1:

$ git branch --track branch1

Это позволяет приложению также обновлять ветвь локально.

Просто переключитесь на новую ветку с помощью:

$ git checkout branch1

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

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

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

Ответ 2

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

Запускает git -fetch с заданными параметрами и вызывает git -merge, чтобы объединить найденную головку в текущую ветвь.

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

Ответ 3

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

git pull

отредактировав файл .git/config.

См.

man git-pull 

для более подробной информации: (клонированный от человека 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.

Ответ 4

Поместите в файл с именем pull-all следующее:

#!/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