听起来像是一个标准的“我可以更改 Git 提交的作者吗”的问题,但实际上并不是......
...我的问题是,您已经更改了作者,git commit --amend --author="Dr Evil <dr.evil@worlddomination.org>"
因为它真的丢失了吗?reflog
例如,它可以恢复吗?
其他场景呢?我知道作者可以在壁球/rebase 类型的活动之后自然地改变,但我假设在这些情况下,你仍然在树的某个地方拥有历史?怎样才能找回?
任何关于恢复这类事情的总结,甚至在报告中将其提取出来都会非常有帮助。我关心的是审计并表明作者不能被恶意伪造。我很感激签名在这里可以提供帮助,但依稀记得,如果作者发生变化,新作者会自己签署提交 - 所以它不能确保除了(可能不是好的新)作者是她所说的人之外的任何事情.
可以更改现有提交的作者(或者“伪造”,如果您愿意的话)。但从技术上讲,这只是因为它被一个新的提交所取代,与旧的相同,除了作者不同,因此提交的哈希不同。
与原始作者(和原始哈希)的提交仍在引用日志中。默认情况下,reflog 只保留提交 2 周。
防止历史的肆意改写,最直接的办法就是防止普通用户使用push -f
. 这是通过预提交钩子完成的。一旦推送了特定的历史记录,除了使用push -f
.