假设我有两个分支
在master
我有类似
index.php
lib/something.php
lib/importantbugfix.php ( newer )
在develop
我有类似
index.php
lib/something.php
lib/importantbugfix.php
lib/config.php
我希望master
上的importantbugfix.php与develop
上的合并,我们该怎么做?
所以我有类似
的东西master
中的
index.php
lib/something.php
lib/importantbugfix.php ( newer )
develop
中的
index.php
lib/something.php
lib/importantbugfix.php ( same newer )
lib/config.php
我正在阅读有关git merge的文档。而且我担心当我合并时它会像
一样master
中的
index.php
lib/something.php
develop
中的
index.php
lib/something.php
lib/importantbugfix.php ( newer )
lib/config.php
而不是上面。
答案 0 :(得分:1)
不,合并不会取代;它结合了 - 因此得名。
有几种方法可以实现它。
最简单的是:
git checkout develop
git merge master
这将创建合并提交。它会将您在master上的更改合并到您开发的更改上。如果您在两个地方都更改了文件的相同部分,则会出现合并冲突,并且必须告诉git您要保留哪些更改。
另一种方式是:
git checkout develop
git rebase master
这将解除您在开发时所做的任何提交,因为它最后一次从master创建/与master合并,并且从那时开始用master上的所有较新提交更新它,基本上是“追赶”与master一起开发。然后,它将重播您在开发时提交的提交,这些提交来自master的现在更新的提交。实际上,它使您的开发分支看起来像今天从主人创建,然后您进行了特定于开发的更改。
这样的结果是一个更清晰的历史。需要注意的是,如果开发分支与其他人共享,并且上次分支/合并后的提交已经被共享,则不应该这样做。
答案 1 :(得分:0)
链接文章中的情景二深入解释了这种情况。如果你正在遭受这种痛苦,那么当你陷入痛苦的合并经历时,你会得到我的同情。
http://randyfay.com/content/avoiding-git-disasters-gory-story