当父级提交图中没有包含它们的标记或分支时,会创建孤立提交。例如,如果您创建分支foo
,请添加提交a
和b
,然后删除分支(即从提交foo
中删除引用b
) ,除非您保存了哈希值,否则a
和b
都无法访问。
x-x-x-x <- master
\
a-b <- foo (reference then deleted or reset to somewhere on master)
孤立提交的基本Git行为最终是垃圾收集和删除(我听说默认是至少30天)。
Git是否会使用git clone
,git fetch
或git push
命令将孤儿从一个仓库提交到另一个仓库?
或者,对于任何不直接调用孤儿散列的操作(例如checkout
或cherry-pick
),Git是否会有效地忽略这些提交?
答案 0 :(得分:3)
在正常的Git工作流程中,将忽略这些提交。其中包括git clone
,git push
和git fetch
。但是,根据Git repo托管服务器,如果需要,您可以将它们拉回到您的仓库中。
这就是我在“Does github remember commit IDs?”中所描述的:通过GitHub Event API,您可以取回(例如)已删除分支的SHA1,并在您自己的仓库中以这种方式恢复。
这补偿了git reflog
在远程方面通常无法访问/公开的事实。