【发布时间】:2013-06-21 12:15:40
【问题描述】:
我知道它们存在于git reflog 中,但是如果我将提交推送到远程存储库,请修改,然后git push --force(警告:通常应避免使用pushing --force 到远程存储库),我覆盖的提交是否存在于某处?
【问题讨论】:
标签: git version-control git-amend
我知道它们存在于git reflog 中,但是如果我将提交推送到远程存储库,请修改,然后git push --force(警告:通常应避免使用pushing --force 到远程存储库),我覆盖的提交是否存在于某处?
【问题讨论】:
标签: git version-control git-amend
我覆盖的提交是否存在于某处?
仅在:
core.logAllRefUpdates needs to be true。--force) 之前由其他人完成。请注意,ORIG_HEAD(memento from a time where reflog didn't existed yet)不是由git commit(如git commit --amend 或git commit --amend -m "new comment")创建/更新的。
因此,如果reflog 未在 repo 上激活,则 ORIG_HEAD 不能用于引用修改后的提交。
【讨论】:
ORIG_HEAD 引用可能指向在执行修正之前引用的提交 HEAD。从理论上讲,如果由于某种原因在普通的本地存储库中禁用了 reflog(我的意思是,不需要手动探索运行 git fsck),这可能会减轻人们的负担。
C:\Users\VonC\Prog\git\git>c:\prog\Gow\bin\grep.exe -nrHI "ORIG_HEAD" *:以下命令确实是一个update_ref("updating ORIG_HEAD", "ORIG_HEAD", head_commit->object.sha1:git merge、git reset、git resolve(现已弃用)、git am 和git rebase . 不是git commit。我刚刚测试过。
没有。您修改后的提交将在您的本地仓库中保留一段时间,但不会被推送。
推送时,Git 会计算丢失的提交以使远程分支与本地分支位于同一点。由于您修改后的提交不再在分支上,因此不会被推送。
修改后的提交会一直保留到垃圾回收发生。但是 GC 在删除提交之前会检查几个条件,所以不要害怕丢失数据。
【讨论】: