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使用规范流程