我知道它們存在於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