当从github从团队仓库中提取时,git强迫我进行合并提交,没有冲突

时间:2013-03-21 12:47:36

标签: git github git-merge git-pull

我一直在与另一个人合作,我们在github上主办一个回购。每次我或他拉,git强迫我们进行合并提交(vim打开提交描述),虽然我们正在处理不同的文件,肯定没有冲突。

如果没有额外的合并提交,不应该只添加新的提交吗?

2 个答案:

答案 0 :(得分:0)

将git的历史视为图形。您的同事和您正在进行基于提交A的新提交;让我们打电话给你的B和他的C.历史现在看起来像这样:

B     C
 \   /
  \ /
   A

有两种方法可以将它重新组合在一起。一个是合并:

   M
  / \
 /   \
B     C
 \   /
  \ /
   A

另一种是变基(例如通过git pull --rebase)。在以下示例中,您是要进行rebase的人:

B -- C -- A

两者都有优点和缺点。作为一般规则,如果您尚未推送(或以其他方式共享)您的提交,则rebase工作正常,即您是唯一一个拥有B的人。如果不是这样,那么反推将导致非常非常烦人的问题,你最好合并。

答案 1 :(得分:0)

由于每次提交都记录整个树的状态,因此需要进行合并 即使不同的分支没有修改任何相同的文件。

虽然在这种情况下保证不会有任何文字 冲突,所以git将始终能够自动合并更改 来自不同的分支机构,并不能保证不会有任何分支机构 语义冲突。例如,一个分支可以修改库中的方法 在另一个分支引入新呼叫时需要一个额外的参数 那个方法;即使合并不会报告由此产生的任何冲突 没有其他更改,代码将无法运行。要求有人这样做 显式合并提交引入了捕获此类冲突的机会 在进行非工作提交之前。在实践中,任何人都不太可能 每次他们进行合并时都会检查这种类型的冲突,但是如果 合并仅在完成合并回到a的工作时完成 长期运行的分支,总是让它成为习惯 完成合并后运行测试套件。