从历史记录中删除单个提交[重复]

Posted

技术标签:

【中文标题】从历史记录中删除单个提交[重复]【英文标题】:Remove a single commit from history [duplicate] 【发布时间】:2014-06-24 21:10:13 【问题描述】:

在我的历史中,我有 1 个提交似乎由于某种原因被重复(检查了差异并且完全相等)。

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

此更改位于尚未推送的分支中。我怎样才能摆脱那些重复的提交之一?

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

【问题讨论】:

【参考方案1】:

要摆脱提交 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

【讨论】:

但请注意,这是重写历史,任何从之前克隆您的存储库的人都将被晾干。另请注意,丢失的提交可能意味着后续提交中的级联冲突。

以上是关于从历史记录中删除单个提交[重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何从 Git 历史记录中永久删除提交?

从远程 git 历史记录中删除我在本地没有的提交

从 Parse 中删除推送通知历史记录条目

如何删除旧的 git 历史记录?

删除 git 历史记录中包含合并的特定提交

git删除所有提交历史记录