2009-09-27 26 views
3

我在GitHub有一个git回购。我一直主要使用git gui来管理它,但现在我开始使用shell。我想知道的是,我如何获取远程中的所有分支,并将它们自动合并到本地回购库中的相应分支中?举例来说,如果我有分支机构masterdevelopment,从而origin/masterorigin/development,我想取origin/master并将其合并到master和获取origin/development并将其合并到development其实拉着git

有没有这样的命令?

回答

1

要列出本地分支:

$ git branch 
* master 

要列出可用的远程分支:

$ git branch -r 
* master 
    branch1 
    branch2 

现在,它变得有趣,要跟踪远程BRANCH1 :

$ git branch --track branch1 

这个e可以通过pull来在本地更新分支。

只需切换到新的分支:

$ git checkout branch1 

通过使用--track参数,所述远程分支被添加到的.git /配置和将变得持久。即这只需要做一次。来自相关条目。混帐/ config中会显示这样的:

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

通过运行分公司为每个远程分支机构的--track命令你想在本地会做你想要什么。

4

没有一个命令可以同时获取和合并所有分支。的git pull命令:

运行于给定的参数GIT中取,并调用GIT-合并检索到的头(多个)合并到当前分支。

所以它只适用于当前分支。这是必要的,因为您需要在冲突发生时处理冲突。

0

如果你知道有问题的分支机构的名称,你可以因此通过编辑的.git/config文件发生在一个

git pull 

此设置。

详情请参阅

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'做同样的事情吗? – 2009-09-28 00:02:04

+0

类别。您可以告诉它获取并更新所有远程跟踪分支,并拉取当前分支。您拥有的其他分支需要手动合并。请注意,从远程跟踪分支分支的分支上拉将从远程跟踪分支合并。 – 2009-09-28 00:07:53

+0

手册页声称你也可以做到真正的交易。我已更新该帖子。 – 2009-09-28 00:10:36

0

将下面的一个文件名为拉全:

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

然后,给予全部可执行权限并将其放入路径中的目录中。通常情况下,$ HOME /斌:

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

如果合并中存在无法自动解决的冲突,则可能需要手动干预。 – 2009-09-28 00:17:11

+0

问题在于每次添加新分支时,我都必须对其进行修改。 – 2009-09-28 00:28:09