git本地倉庫是否只要commit過的內容,不管之後經過多少次rebase,rest --hard等操作,都可以透過reflog恢復?
走同样的路,发现不同的人生
並不是,因為 reflog 資料保存在 .git/logs/ 目錄下,當目錄沒有內容時無法進行 git reflog 操作。 那麼只要保證這個不清空這個目錄就能隨便進行危險操作? 依舊不行,因為 git 會不定時的自動運行 gc,而 git 的 gc 任務會將不被任何 commit 引用並且已存在一段時間 (數月) 的對象刪除。
不要想著能恢復,就隨便做一些危險操作,萬一哪天真沒法恢復了,就悲劇了,要清楚工具的最佳效用是靠人去發揮的,最重要的還是保持協作流程規範。 請參考:Git使用規範流程
並不是,因為 reflog 資料保存在 .git/logs/ 目錄下,當目錄沒有內容時無法進行 git reflog 操作。
那麼只要保證這個不清空這個目錄就能隨便進行危險操作?
依舊不行,因為 git 會不定時的自動運行 gc,而 git 的 gc 任務會將不被任何 commit 引用並且已存在一段時間 (數月) 的對象刪除。
不要想著能恢復,就隨便做一些危險操作,萬一哪天真沒法恢復了,就悲劇了,要清楚工具的最佳效用是靠人去發揮的,最重要的還是保持協作流程規範。
請參考:Git使用規範流程