用git合并多个分支

Chv*_*off 25 git merge rebase

我有2个本地分支叫做"开发"和"主人"; 他们是相似的.在我公司的服务器上有一个"主要"仓库(生产)和几个由其他开发商制造的分支机构:

$ git branch -a
* develop
  master
  remotes/origin/HEAD -> origin/master
  remotes/origin/some-test
  remotes/origin/feature1
  remotes/origin/feature2
  remotes/origin/master

我怎么能合并remotes/origin/feature1,并remotes/origin/feature2进入我的地方"master"分支,复制所有到"发展",并开始在我的"开发"分支与实际代码的工作?

Cam*_*ner 38

  1. git checkout master
  2. git pull origin feature1 feature2
  3. git checkout develop
  4. git pull . master(或者可能git rebase ./master)

第一个命令将当前分支更改为master.

第二个命令从远程feature1feature2分支中获取更改.这是一个"章鱼"合并,因为它合并了2个以上的分支.如果您愿意,也可以进行两次正常合并.

第三个命令会将您切换回您的develop分支.

第四条命令是直接从当地的变化masterdevelop.

希望有所帮助.

编辑:请注意,git pull它将自动执行,fetch因此您无需手动执行此操作.它几乎相当于git fetch后面跟着git merge.

  • 如果存在冲突,合并将会失败并显示"不应该做八达通"的消息.这显然是有史以来最好的错误消息之一. (15认同)
  • 此方法与仅使用两次合并之间有什么区别?您是否得到了所有三个分支作为父级的单个合并提交?另外,如果合并不干净,这可能会失败,对吗?所以无论如何,“git merge feature1 feature2”可能是必要的。 (2认同)

Bra*_*don 9

我只是"取"所有的起源:

git fetch origin
Run Code Online (Sandbox Code Playgroud)

既然它在您的仓库中,您可以将分支合并为主仓:

git checkout master

git merge origin/feature1 

git merge origin/feature2 
Run Code Online (Sandbox Code Playgroud)

现在你可以将master合并到develop中

git checkout develop
git merge master 
Run Code Online (Sandbox Code Playgroud)

如果你要回到原点那么我会设置一个本地跟踪分支,这样你就可以进行本地访问并直接推送到原点:

git branch --track origin/feature1 feature1
Run Code Online (Sandbox Code Playgroud)