我知道它们存在于git reflog
中,但是如果我将提交推送到远程存储库,修改,然后git push --force
(通常应避免警告:pushing --force
远程存储库),我覆盖的提交是否存在?Git是否存储修改?
回答
我会覆写的提交是否存在?
只有:
- 当地回购的reflog
- 的reflog远程upstream repo(其中犯下以前出版)。
上游回购通常是bare one,因为kostixcomments,所以core.logAllRefUpdates
needs to be true,如果你想看到reflog在上述裸露的上游回购。 - 您的远程回购任何其他本地克隆,完成之前您的第二次git推(
--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
未在回购库上激活,则ORIG_HEAD不能用于引用修改后的提交。
编号您的修改后的提交将保留在您的本地回购中一段时间,但不会推送。
推送时,Git会计算缺少的提交以使远程分支与本地分支处于同一点。由于您的修改提交不在分支上,因此不会推送。
修改后的提交保留,直到发生垃圾回收。但GC在删除提交之前检查了几个条件,所以不要害怕丢失数据。
在OP描述的场景中,提交在修改之前被推送。 –
哦,是的,谢谢,我刚刚看到。因为它没有被编辑,我一定误解了这个问题。 VonC BTW非常好的答案,我upvoted。 –
- 1. 修改git存储库root配置
- 2. git存储,git apply,修改,git commit,git pop(首选rebase)?
- 3. 修改存储过程是否更新存储过程定义?
- 4. git是否可以防止未经授权的存储库修改?
- 5. 是否可以修改.git存储库而不重写历史记录?
- 6. 是否有可能完全修改存储库中文件的git时间戳?
- 7. CQ5是否存储crx的修改列表(历史记录)?
- 8. 是否可以修改系统存储过程?
- 9. git更改存储库时
- 10. 更改Git存储消息
- 11. 修改gitolite存储库url
- 12. 修改存储在VARCHAR
- 13. Git:推送到已修改的存储库
- 14. 在git存储库中保留修改的文件
- 15. 获取已在git存储库中修改的项目
- 16. 如何阻止XCode 4修改本地Git存储库?
- 17. 在git存储器中列出修改过的文件名
- 18. 修复损坏的git存储库
- 19. “git svn rebase”是否会损坏非“git svn”存储库?
- 20. git push fatal:不是git存储库:'。'
- 21. 合并来自原始git存储库与修改的存储库的新修订
- 22. Git存储库内的Git存储库
- 23. git lfs是否支持本地或“近”辅助存储\缓存?
- 24. 检查目录是否是git存储库(不必cd到它)
- 25. TFVC中是否有git样式修改选项?
- 26. 是否有可能使git提交不可修改?
- 27. 是否可以修改PrintDialog?
- 28. 是否strftime - 修改值?
- 29. PhpStorm是否内置了git修订图?
- 30. 检查git存储库中的特定文件是否已更改
我应该注意的是,通常会推送到裸仓库,裸仓库默认情况下禁用reflog。所以第二点应该有一个很大的“如果”附加到它。 – kostix
@kostix好点,我在答案中包含了回复日志激活裸回购。 – VonC
我也相信(虽然我懒得检查)'ORIG_HEAD'参考文件可能指向在修改修改之前提到的提交'HEAD'。理论上,如果reflog由于某种原因在正常的本地存储库中被禁用(我的意思是,没有'git fsck'运行需要手动探索),这可能能够缓解人们的脖子问题。 – kostix