历史更改时,在Git中唯一引用提交

时间:2010-11-21 17:15:48

标签: git commit

我有一个问题,我想从提交消息中引用其他提交,我使用SHA ID,但我也想不时更改以前的提交。当我更改提交时,SHA ID会发生变化吗?有另一种方式来唯一引用提交吗?感谢

2 个答案:

答案 0 :(得分:2)

没有自动解决方法。您可能想要做的是在某个时刻完成提交(即合并为master并推送时),并在此时确认所有SHA1都指向正确的位置。

您可以检查自己的一种方法是为SHA1提交grep提交消息(例如git log --grep='[0-9a-f]{7}),并检查给定的SHA1是否代表提交,该提交是提交的祖先,其消息提及它。你也可以从一个钩子触发那个检查。究竟哪个钩子取决于您的工作流程;我可以看到预提交或合并后的可能性。对于单一提交验证(如预提交),您实际上不需要grep日志,只需要当前的提交消息。对于合并,您需要grep要合并的提交的日志。

答案 1 :(得分:1)

我认为唯一可行的方法是使用标签。但是,只要您想引用提交,就很难创建标记。

也许使用相对引用(如~5)可能有效,但如果删除,拆分或压缩提交,这将会中断。

另一种可能性是引用树的SHA1,而不是提交本身。这样,如果您更改了提交,但没有更改它们后面的树,则引用仍然有效。我认为这个问题是工具不支持这个。