哪种方式使用Git合并?(Which way to merge with git?)

2019-07-30 12:16发布

说我有两个分支

master -- A -   -   -   -   -  - merge
          \                    /
           \- develop -- B -- C

现在,如果我要合并这将是一个快速前进,但我应该做的

git checkout develop
git merge master

要么

git checkout master
git merge develop

如果我有什么可能的冲突

master -- A - D -  -  -  -  -  -merge
          \                   /
           \- develop -- B -- C

如果我现在在融合发展或进入主? 这是一个有点混乱,所以一个很好的解释将非常感激

Answer 1:

缺少工作流任务

首先,有几件事情在您的工作流程缺少使它很难回答现实世界的方式你的问题。 例如:

  1. 你应该总是从上游合并分支前拉。 其他人可能已经改变开发船长 ,你还没有占到方式。

  2. 您还没有确定这是你的长寿命发展的路线。 一个假设的发展 ,但是这只是一个猜测,因为你还没有确定合并如何处理自己的分支机构。

通用最佳实践衍合长寿分行

因此,假设你已经提前更新你的分支,并且掌握发展都是长寿分公司和master是完成代码“官方”的分支,那么你应该做的东西沿着这些路线。

  1. 请根据发展临时衍合分支。

     git checkout -b tmp develop 
  2. 衍合你的工作在 ,以确保干净的快进合并。 我想使这是一个互动的底垫,但做任何你想要的方式。 例如:

     git rebase -i master 
  3. 合并到 。 我宁愿强制合并是一个快进,但你可以做任何适合你。

     git checkout master git merge --ff-only tmp 
  4. 确保合并后的分支干净推动。

     git push origin 
  5. 如果一切顺利,处置您的临时党支部的。

     git branch -d tmp 
  6. 重新合并发展作为合并提交,而不是快进。 这使你的发展与主分支的继续工作线。

     git checkout develop git merge master git push origin 

自然的结果

这样做可以确保在master分支的历史是从合并冲突相对线性的和免费的,而且还可以让你在需要的时候没有搞砸了分公司公布重订。 这都是积极的东西。

然而,这个过程可以留下,因为从重新合并发展可能并不总是快进合并复杂的合并历史发展 。 这是不是问题本身,它是一个包含重订基期的任何工作流程只是一个自然的结果。 这是一个需要注意的,但在我看来这是值得为它付出代价提供了团队的灵活性的代价。



Answer 2:

做第二次,合并,而在大师。

我通常重订主原点,底垫开发掌握, 然后合并。 这使得底垫在冲突出现; 如果你这样做,不会有合并冲突。



文章来源: Which way to merge with git?
标签: git merge branch