“空”或无意义的Git提交永远不可见?

时间:2015-06-30 20:43:16

标签: git

我今天遇到了一个情况,并希望确保我理解发生了什么。如果我有一个主要的分支,我做了一个小提交,然后我直接做同样的小提交主,如果我尝试将分支与主合并?会发生什么?

什么都没发生?当我推动合并时,没有任何提交它出现在Git中。那么Git是否会忽略包含净零变化的合并?

编辑:当我这样做时,几乎没有任何东西出现在git中。我将更改推送到master,并且从未再次提及合并和推送。不是在gitk --all中,不是在我的SourceTree分支历史中,而是在我的BitBucket提交历史中。它就像从未发生过一样。

2 个答案:

答案 0 :(得分:0)

是的,在您描述的情况下,没有新的提交将被添加到主分支,因为文件内容已经与分支中的内容相同。

如果你与--no-ff合并,那么Git会创建一个新的合并提交,其中包含两个父母(你以前的主人和你的分支),它们记录了分支合并的历史。

答案 1 :(得分:0)

如果你在不同的分支上进行两次提交,即使它们包含相同的更改,它们仍然是单独的提交。

如果您现在合并这两个分支,您将获得合并提交,就像每次合并一样。如果没有冲突,那么合并提交将不会引入任何新的更改。

但是你仍然会有一个包含两个父项的合并提交,这标志着历史中合并分支的点。

示例:

       branch_a       after merge
          ↓              ↓
* -- * -- A ------ X --- M
                        /
* ------- B ------ Y --/
          ↑
       branch_b

提交XY分别提交给分支branch_abranch_b。两个提交都包含相同的更改。它们仍然是不同的对象,因为 - 例如 - X有父A,而Y有父B(有更多差异)。如果我们现在将branch_b合并到branch_a,则会创建一个以MX为父项的合并提交Y