【发布时间】:2015-10-02 19:15:53
【问题描述】:
我已经阅读了关于 SO 上 git merge 和 git rebase 的相关问题,但我仍然无法完全理解幕后发生的事情。
这是我们的分支情况:
MASTER------------------------
\ \
\ \----Feature B---
\ \
\-----Feature A----------\---Feature A+B
给定 2 个在不同时间源自 master 的特征分支,我们现在想要合并这 2 个分支。我们想遵循first rebase then merge 的做法,但是当我们将功能 A 重新定位到功能 B 时,我们会遇到冲突。这是意料之中的,因为两个特性(和主特性)在相同区域都有变化。但奇怪的是,同样的冲突在git rebase --continue之后不断重现。这让我们发疯,所以我们最终中止了 rebase,并使用git merge。事实证明,这些冲突其实很容易解决。
我的问题有两个:
-
git rebase适合我们的情况吗?还是 rebase 仅适用于引入一些(例如 1 或 2 个)更改? - 幕后发生了什么导致相同的冲突一次又一次地出现?我的理解是
rebase一次解决一个冲突,但它比较的是哪个提交,它与什么比较?
关于 SO 的相关帖子:
【问题讨论】:
-
您确定这是相同冲突(相同文件、相同行、相同更改),还是相同文件+相同行但对它们进行了新的不同更改,还是只是同一个文件但冲突的行范围不同?
-
嗯.. 很抱歉问了这么简单的问题 - 在第一次发生冲突之后,在你纠正它之后,你还记得做一个
git add conflicted.file吗?如果没有,git 不会注意到修复提交,git rebase --continue会将文件重新提升为尚未解决 -
它们不是完全相同的冲突,但肯定涉及相同的行,而且我确信没有那么多的变化(如反复出现的冲突)触及这个领域。我们在
git rebase continue之前做add conflicted.file。 -
关于2.,你可能想激活
rerere。
标签: git merge git-merge git-rebase