我知道它们存在于 中git reflog
,但是如果我将提交推送到远程存储库,然后进行修改git push --force
(警告:pushing --force
通常应避免到远程存储库),我覆盖的提交是否会存在于某处?
问问题
162 次
2 回答
5
我覆盖的提交会存在于某处吗?
只有在:
- 本地仓库的reflog
- 您的远程上游 repo的reflog(该提交之前发布的位置)。
上游仓库通常是一个裸仓库,正如kostix评论一样,如果您想在上述裸上游仓库中查看 reflog,则必须是真实的。
core.logAllRefUpdates
- 远程仓库的任何其他本地克隆,在其他人的第二次 git push ( )之前
--force
完成。
请注意,ORIG_HEAD
(reflog 尚不存在时的纪念品)不是git commit
由 a (如 agit commit --amend
或 a )创建/更新的git commit --amend -m "new comment"
。
因此,如果reflog
未在 repo 上激活,则 ORIG_HEAD 不能用于引用修改后的提交。
于 2013-06-21T13:21:06.867 回答
1
不会。您修改后的提交将在您的本地仓库中保留一段时间,但不会被推送。
推送时,Git 计算丢失的提交以使远程分支与本地分支位于同一点。由于您修改后的提交不再在分支上,因此不会被推送。
修改后的提交会一直保留到垃圾回收发生。但是 GC 在删除一个提交之前会检查几个条件,所以不要害怕丢失数据。
于 2013-06-21T12:35:48.540 回答