我一直在与另一个人合作,我们在github上主办一个回购。每次我或他拉,git强迫我们进行合并提交(vim打开提交描述),虽然我们正在处理不同的文件,肯定没有冲突。
如果没有额外的合并提交,不应该只添加新的提交吗?
答案 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的工作时完成 长期运行的分支,总是让它成为习惯 完成合并后运行测试套件。