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

时间:2017-10-14 07:25:14

标签: git git-push git-clone git-fetch orphan

当父级提交图中没有包含它们的标记或分支时,会创建孤立提交。例如,如果您创建分支foo,请添加提交ab,然后删除分支(即从提交foo中删除引用b) ,除非您保存了哈希值,否则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命令将孤儿从一个仓库提交到另一个仓库?

或者,对于任何不直接调用孤儿散列的操作(例如checkoutcherry-pick),Git是否会有效地忽略这些提交?

1 个答案:

答案 0 :(得分:3)

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

这就是我在“Does github remember commit IDs?”中所描述的:通过GitHub Event API,您可以取回(例如)已删除分支的SHA1,并在您自己的仓库中以这种方式恢复。

这补偿了git reflog在远程方面通常无法访问/公开的事实。