我一直对“压缩”或重写历史持怀疑态度,现在我几乎确信我应该从我管理的存储库中禁止这种做法。但也许有人可以回答这个问题,并为我的壁球冠军同事节省一天的时间。
我刚刚遇到了一行代码,我想了解其背后的原因,所以我过去常常git annotate
找出是谁写的以及为什么写的。但它指向一个“压缩”提交,一长串关于无数功能和错误修复的提交消息头列表,没有详细信息。不是很有帮助。
“哦,但总会有 reflog,”我确信;“信息永远不会在 git 中丢失!” 好的,很高兴听到它!但我试过git reflog <squashed-commit-hash>
了,根本没有输出——没有帮助。我也试过git rev-list <squashed-commit-hash>
了,得到了数百个哈希的列表,在用 手动检查了其中一些之后git show
,我得出结论,它们不是被压扁的部分——也没有帮助。
那么实际上是否有可能找出对那行代码有贡献的单个提交,并查看该提交的全部信息?是否可以在一个 git 命令中完成,而不必成为 bash 大师?或者这些信息实际上是否真的在 git 中丢失了?