&引用;“空的”;还是无意义的Git提交永远不可见?

&引用;“空的”;还是无意义的Git提交永远不可见?,git,Git,我今天遇到了一个情况,我想确保我了解发生了什么。如果我有一个从master分支出来的小提交,那么我直接向master提交相同的小提交,如果我尝试将该分支与master合并,会发生什么 什么都没发生吗?当我推动合并时,Git中从未出现过对它的提交。那么Git只是忽略了包含净零更改的合并吗 编辑:当我这么做的时候,git中几乎什么都没有出现。我将更改推送到master,而合并和推送再也没有被提及。不在gitk中——全部,不在我的SourceTree分支历史记录中,也不在我的BitBucket提交历史

我今天遇到了一个情况,我想确保我了解发生了什么。如果我有一个从master分支出来的小提交,那么我直接向master提交相同的小提交,如果我尝试将该分支与master合并,会发生什么

什么都没发生吗?当我推动合并时,Git中从未出现过对它的提交。那么Git只是忽略了包含净零更改的合并吗


编辑:当我这么做的时候,git中几乎什么都没有出现。我将更改推送到master,而合并和推送再也没有被提及。不在gitk中——全部,不在我的SourceTree分支历史记录中,也不在我的BitBucket提交历史记录中。就像从未发生过一样。

是的,在您描述的情况下,不会向主分支添加新的提交,因为文件内容已经与分支中的内容相同


如果您与
--no ff
合并,那么Git将与两个父级(您以前的主分支和您的分支)创建一个新的合并提交,记录分支合并的历史记录。

是的,在您描述的情况下,不会向主分支添加新提交,因为文件内容已与分支中的内容相同


如果您已与
--no ff
合并,那么Git将创建一个新的合并提交,其中包含两个父级(您以前的主分支和您的分支),记录分支合并的历史记录。

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

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

但您仍将有一个具有两个父级的合并提交,这标志着分支合并的历史点

例如:

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

提交
X
Y
分别提交到分支
branch\u a
branch\u b
。两个提交都包含相同的更改。它们仍然是不同的对象,因为例如-
X
具有父对象
A
,而
Y
具有父对象
B
(存在更多差异)。如果我们现在将
branch\u b
合并到
branch\u a
中,将创建一个合并提交
M
,其父级为
X
Y

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

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

但您仍将有一个具有两个父级的合并提交,这标志着分支合并的历史点

例如:

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

提交
X
Y
分别提交到分支
branch\u a
branch\u b
。两个提交都包含相同的更改。它们仍然是不同的对象,因为例如-
X
具有父对象
A
,而
Y
具有父对象
B
(存在更多差异)。如果我们现在将
branch\u b
合并到
branch\u a
中,则会创建一个合并提交
M
,该合并提交将
X
Y
作为其父级。

合并时,它将发生冲突。当您要解决这些冲突时,Git将自动为您解决,并将创建一个空的合并提交。顺便说一句,这似乎是一件很容易测试自己的事情?Git找到了“合并基础”,并比较了从这个基础到每个技巧的变化。您可以选择要推送的引用,最近的默认设置是,如果当前引用的上游具有相同的名称,则只推送当前引用。要合并的git具体是什么,git显示了什么?你有没有收到任何意想不到的消息?在推之前,您是否在本地系统上看到了合并提交?它是否快速前进?当我这样做时,实际上git中没有显示任何内容。我将更改推送到master,而合并和推送再也没有被提及。不在gitk中——全部,不在我的SourceTree分支历史记录中,也不在我的BitBucket提交历史记录中。好像从来没有发生过。我正在使用SourceTree将一个分支合并到master中。合并时会发生冲突。当您要解决这些冲突时,Git将自动为您解决,并将创建一个空的合并提交。顺便说一句,这似乎是一件很容易测试自己的事情?Git找到了“合并基础”,并比较了从这个基础到每个技巧的变化。您可以选择要推送的引用,最近的默认设置是,如果当前引用的上游具有相同的名称,则只推送当前引用。要合并的git具体是什么,git显示了什么?你有没有收到任何意想不到的消息?在推之前,您是否在本地系统上看到了合并提交?它是否快速前进?当我这样做时,实际上git中没有显示任何内容。我将更改推送到master,而合并和推送再也没有被提及。不在gitk中——全部,不在我的SourceTree分支历史记录中,也不在我的BitBucket提交历史记录中。好像从来没有发生过。我正在使用SourceTree将一个分支合并到master。这不可能是正确的<代码>--无ff仅在可以进行快进合并时更改行为。在这种情况下,两个提交是不同的,因此首先不可能进行快进合并。一个提交在主分支上,另一个提交在一个单独的分支上,我将该分支合并回主分支。两个提交只包含相同的代码更改,没有其他代码提交。@Slayer0606-除非它们有完全相同的提交,否则它们是不同的。引入相同的变化是另一回事。这不可能是正确的<代码>--无ff仅在可以进行快进合并时更改行为。在