我今天遇到了一个情况,并希望确保我理解发生了什么。如果我有一个主要的分支,我做了一个小提交,然后我直接做同样的小提交主,如果我尝试将分支与主合并?会发生什么?
什么都没发生?当我推动合并时,没有任何提交它出现在Git中。那么Git是否会忽略包含净零变化的合并?
编辑:当我这样做时,几乎没有任何东西出现在git中。我将更改推送到master,并且从未再次提及合并和推送。不是在gitk --all中,不是在我的SourceTree分支历史中,而是在我的BitBucket提交历史中。它就像从未发生过一样。答案 0 :(得分:0)
是的,在您描述的情况下,没有新的提交将被添加到主分支,因为文件内容已经与分支中的内容相同。
如果你与--no-ff
合并,那么Git会创建一个新的合并提交,其中包含两个父母(你以前的主人和你的分支),它们记录了分支合并的历史。
答案 1 :(得分:0)
如果你在不同的分支上进行两次提交,即使它们包含相同的更改,它们仍然是单独的提交。
如果您现在合并这两个分支,您将获得合并提交,就像每次合并一样。如果没有冲突,那么合并提交将不会引入任何新的更改。
但是你仍然会有一个包含两个父项的合并提交,这标志着历史中合并分支的点。
示例:
branch_a after merge
↓ ↓
* -- * -- A ------ X --- M
/
* ------- B ------ Y --/
↑
branch_b
提交X
和Y
分别提交给分支branch_a
和branch_b
。两个提交都包含相同的更改。它们仍然是不同的对象,因为 - 例如 - X
有父A
,而Y
有父B
(有更多差异)。如果我们现在将branch_b
合并到branch_a
,则会创建一个以M
和X
为父项的合并提交Y
。