Git 会克隆、获取或推送孤儿提交吗?

Will Git ever clone, fetch, or push orphan commits?

孤立提交是在其父提交图中没有包含它们的标记或分支时创建的。例如,如果创建分支 foo,添加提交 ab,然后删除分支(即从提交 b 中删除引用 foo) ,那么 ab 都将无法访问,除非您保存它们的哈希值。

x-x-x-x   <- master
     \
      a-b  <- foo (reference then deleted or reset to somewhere on master)

孤立提交的基本 Git 行为是最终垃圾收集并删除它们(我听说默认至少 30 天)。

我的问题是:

Git 是否会使用 git clonegit fetchgit push 命令将孤立提交从一个存储库移动到另一个存储库?

或者 Git 是否有效地忽略了任何不直接调用孤立哈希的操作的这些提交(例如 checkoutcherry-pick)?

在正常的 Git 工作流程中,这些提交将被忽略。这包括 git clonegit pushgit fetch。但根据 Git 存储库托管服务器,如果需要,您可以将它们拉回您的存储库。

这就是我在“": through the GitHub Event API 中描述的内容,您可以取回(例如)已删除分支的 SHA1,并在您自己的存储库中以这种方式恢复它。

这弥补了 git reflog 在远端通常不是 accessible/public 的事实。