我该如何修复这个git提交日志?

时间:2014-01-14 18:51:27

标签: git bitbucket git-commit git-log git-squash

我在Bitbucket上有一个存储库。当我试图压缩提交c2658250a1837e时,我有点搞砸了提交日志:

enter image description here

尝试压缩这些提交会导致0942142,这基本上是空的。我的意思是,如果我尝试查看提交它显示没有文件更改,这可能是正常的“合并”提交 - 我不知道。

显然我需要在推送到Bitbucket之前修复这样的事情,但是我怎么能在事后解决呢?如果可能的话,我想压缩0942142c2658250a1837e,因此它看起来像是一个名为“删除未使用的文件”的提交。

PS:这是一个私人仓库(目前为止),所以没有人撤消任何这些变化(

)。

编辑:下面的BuzzSaw答案对于压缩自0a1837e以来的每次提交都是正确的。我想只是压缩这三个提交并保留历史的其余部分(截图是一个模型 - 不能代表实际的变化)。所以我必须这样做:

git reset --hard HEAD~7
git cherry-pick -n 0a1837e..c265825
git cherry-pick -n -m 1 0942142
git commit -m "Removed unused files"
git cherry-pick 8f8308b
git cherry-pick f7b14f5
git cherry-pick bb90ff9
git cherry-pick 976985d
git cherry-pick 6f4d0c2

现在我的提交日志被美化了:

enter image description here

1 个答案:

答案 0 :(得分:2)

git branch area51
git reset --hard HEAD~7
git merge --squash --no-commit area51
git commit -m "My new commit message."
git push -f
git branch -D area51

根据需要进行调整。