2013-07-25 52 views
3

让我们假设我在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

+0

我不知道有什么办法......如果你没有太多的消息要改变,你可以过滤rebase后的提交消息并手动修复它们 – knittl

+0

@ knittl:是的,我可以。但是,手动方式相当容易出错,因为您可能会忘记您在某个提交中放置了SHA。而且,定期进行“rebase”变得乏味。所以,我正在寻找一种自动方式。 – s3rvac

+1

绝对没有自动内置git来做到这一点。你可以编写一个脚本,你可以使用'git filter-branch'来过滤提交消息,但这会有些棘手。一般来说,当我重新布局/重写未发布的历史记录时,我只需“重新命名-i”,然后将修补程序移到我介绍错误的位置旁边,然后合并提交,从而完全避免此问题。 :-) – torek

回答

-3

衍合的不变承诺改变SHA,作为底垫是“改写历史”

因此行为 - 应衍合只就联合国发布历史来完成。

+0

我的'特征'分支在'rebase'时间时未发布。我保持私密,不时将其与'master'同步(以从'mater'到'feature'的变化,反之亦然),当我完成时,我会将它合并到'master '。 – s3rvac

+1

这并没有真正回答原始发布者关于如何在“rebase”期间自动重写提交消息的问题。 – 2013-07-25 12:22:37

相关问题