Git 会克隆、获取或推送孤儿提交吗?
Will Git ever clone, fetch, or push orphan commits?
孤立提交是在其父提交图中没有包含它们的标记或分支时创建的。例如,如果创建分支 foo
,添加提交 a
和 b
,然后删除分支(即从提交 b
中删除引用 foo
) ,那么 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
命令将孤立提交从一个存储库移动到另一个存储库?
或者 Git 是否有效地忽略了任何不直接调用孤立哈希的操作的这些提交(例如 checkout
或 cherry-pick
)?
在正常的 Git 工作流程中,这些提交将被忽略。这包括 git clone
、git push
和 git fetch
。但根据 Git 存储库托管服务器,如果需要,您可以将它们拉回您的存储库。
这就是我在“": through the GitHub Event API 中描述的内容,您可以取回(例如)已删除分支的 SHA1,并在您自己的存储库中以这种方式恢复它。
这弥补了 git reflog
在远端通常不是 accessible/public 的事实。
孤立提交是在其父提交图中没有包含它们的标记或分支时创建的。例如,如果创建分支 foo
,添加提交 a
和 b
,然后删除分支(即从提交 b
中删除引用 foo
) ,那么 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
命令将孤立提交从一个存储库移动到另一个存储库?
或者 Git 是否有效地忽略了任何不直接调用孤立哈希的操作的这些提交(例如 checkout
或 cherry-pick
)?
在正常的 Git 工作流程中,这些提交将被忽略。这包括 git clone
、git push
和 git fetch
。但根据 Git 存储库托管服务器,如果需要,您可以将它们拉回您的存储库。
这就是我在“
这弥补了 git reflog
在远端通常不是 accessible/public 的事实。