Git rebase冲突的理解

时间:2013-07-12 07:27:38

标签: git version-control

在我的工作流程中,我有两个主要分支,masterdevelopment

我们最近决定在development上重新定位master,因为我们在master上做了很多修正,我们继续开发development上的功能。

我们的目标是最终完全删除development并保留一个分支来更改我们的工作流程,因为它不适合我们的使用...

所以我们发生了一些冲突(在不同的分支机构开发7个月后正常),但有些人退出了奇怪...

例如,很多时候我们有类似的东西:

$ git status
# On branch master
# Unmerged paths:
#   (use "git add/rm ..." as appropriate to mark resolution)
#
#       added by them:      X
#       added by us:        Y

但对于added by us,该文件存在于masterdevelopment中以进行提交。您必须知道有问题的文件至少 10个月旧....

我的问题是: added by us的确切含义是什么?

并且 rebase是一个好习惯吗?

1 个答案:

答案 0 :(得分:6)

我假设us表示您当前的分支,them表示您当前正在进行变更。但这实际上是一个非常小的问题,因为:

你不应该重新定位7个月的工作!!!

重新映射几乎只能用于本地代码,而尚未推送。如果你将它用于别的东西,你可能做错了什么。这是其中一次。

默认答案正在合并,变基是特殊情况。所以你也应该在这种情况下合并。变基的后果:

  • 你必须做100次合并而不是1次并且关心冲突100次而不是一次(rebase中的每一步都是合并)
  • 您的历史记录是total lie。我假设你没有彻底测试每个重新提交的提交(因为这显然会很疯狂)。结果是,在稍后的时间里,没有任何代码可能实际工作甚至是有意义的。有关冲突解决的信息也会丢失(如果你进行合并,它就不会丢失 - 你可以通过对父母双方的分歧来获得它。)