Фактически вытягивание с помощью 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