Git rebase冲突的理解

Pie*_*aud 1 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
Run Code Online (Sandbox Code Playgroud)

但对于added by us,该文件存在于masterdevelopment为承诺.您必须知道有问题的文件至少有10个月的历史....

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

rebase一个好习惯吗?

Chr*_*ial 6

我假设这us意味着您当前的分支,以及them您当前正在进行的提交.但这实际上是一个非常小的问题,因为:

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

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

默认的答案就是融合,垫底的是特殊情况.所以你也应该在这种情况下合并.变相的后果:

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