从历史记录中删除单个提交

时间:2014-05-07 18:25:43

标签: git

在我的历史中,我有一个似乎因某种原因重复的提交(检查差异并完全相同)。

$ git log pretty=oneline
...
...
d21971dd55e4b4f62421b6531b3fd1e65102974d Add Source Sans Pro required weights
...
...
8aaba297017086094b60087b5601ccc01d50be54 Add Source Sans Pro required weights
...
...

此更改位于尚未推送的分支中。如何摆脱其中一个重复的提交?

编辑:提交日志之间的点并不意味着它们之间恰好有两次提交。在某些情况下,有超过10个。

1 个答案:

答案 0 :(得分:4)

要摆脱提交d21971,你可以做

git rebase -i d21971^

它将打开您的文本编辑器,其中包含提交列表,直到提交d21971的父级。只需删除提交d21971的行,保存并退出。它将删除它。

为了确保即使您犯了错误也不会丢失任何提交,您可以先标记当前分支。例如:

git tag safetyTag
git rebase -i d21971^
#Decide that you don't like what you just did
git checkout safetyTag
git branch -f master