让我们假设我在feature
分支上,创建为master
。我做一个承诺Git:如何在rebase之后让SHA保持提交消息最新?
Fix XYZ
其SHA是,比如说,389b04
。然后,我做了另一次提交,在提交消息中我提到了之前的SHA。
Fix UVW
This fix is related to the fix in 389b04.
在那之后,我做了一堆其他的提交。现在,我将feature
分支与master
同步,所以我做了git rebase master
。但是,由于rebase
更改了历史记录,它会更改引用的提交389b04
的SHA,因此第二个提交现在引用了一个不存在的提交。
我的问题是:是否有可能在做rebase
时自动修复提交消息中的SHA?我知道这可以通过做merge
来解决,但我想知道是否有这样做的方式rebase
。
我不知道有什么办法......如果你没有太多的消息要改变,你可以过滤rebase后的提交消息并手动修复它们 – knittl
@ knittl:是的,我可以。但是,手动方式相当容易出错,因为您可能会忘记您在某个提交中放置了SHA。而且,定期进行“rebase”变得乏味。所以,我正在寻找一种自动方式。 – s3rvac
绝对没有自动内置git来做到这一点。你可以编写一个脚本,你可以使用'git filter-branch'来过滤提交消息,但这会有些棘手。一般来说,当我重新布局/重写未发布的历史记录时,我只需“重新命名-i”,然后将修补程序移到我介绍错误的位置旁边,然后合并提交,从而完全避免此问题。 :-) – torek