可以有 git 提交,指向同一棵树吗?

Can there be git commits, that point to the same tree?

我知道多个 git 树可以指向同一个 blob。当我们只更改文件名并再次提交时,就会发生这种情况。但是可以有 git 提交,指向同一棵树吗?如果是,什么时候发生?

当然......一个常见的,没有想太多:当你恢复修订时,如果你最终得到同一棵树(或在恢复许多修订的过程中有几棵树)......好吧,给你了。

是的。这很常见。在某些情况下,您可以创建与另一个提交指向同一棵树的新提交。

  1. 使用git commit --allow-empty创建一个空的提交,它和它的父节点有相同的树。空提交没有任何更改。

  2. git commit && git revert 创建一个与其父项的父项具有相同树的还原提交。

  3. git commit-tree ${foo}^{tree} 创建一个与 foo 具有相同树的提交。 foo 是一个 commit-ish。

  4. 基于相同的提交,提交相同的更改。重复这些步骤,您会得到指向同一棵树的不同提交。