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