1
git log 

将列出当前分支上的所有提交,假设我有三个提交,并且我想删除中间的一个,您可以建议以下命令:

git reset --hard <sha1-commit-id>

但是,我不想恢复到那个提交 id,我只想将它从分支中删除,所以下次我这样做时git log它不会出现在列表中。提前谢谢。

编辑,抱歉我的解释失误,当我说删除提交 ID 时,我的意思是删除所有相关的更改。

4

3 回答 3

2

提交是否也在远程分支上?根据对此的答案将确定您应该做什么。

如果不是,请执行git rebase -i <sha before the one you want to remove>这将允许您删除提交。

如果它在遥控器上,您不想删除它。你最终会导致推拉问题。推送后重写历史是一件坏事。所以对于那种情况你想要git revert <sha that you want to remove>。这将创建一个撤消更改的新提交。

于 2013-04-09T14:42:59.473 回答
1

要有效地撤消该提交中的更改并将其从历史记录中删除,您可以执行以下操作:

git rebase --onto HEAD^^ HEAD $BRANCH

$BRANCH您当前所在的分支的名称在哪里。

或者,您可以检查较旧的提交,然后挑选较新的提交:

TIP=`git rev-parse HEAD`
git reset --hard HEAD^^
git cherry-pick $TIP

请记住,这两个操作都会更改历史记录,git push --force如果您已经发布了这些提交,这将需要一个操作。

于 2013-04-09T14:40:07.860 回答
0

使用命令

git rebase -i HEAD~N

假设您不想要第二次提交,N 将是 2.. 一旦您以 N=2 的值运行此命令,git 将提示您采取行动.. 只需删除您不想要的提交的行,它将被删除.. .

并删除标签使用

git tag -d [标签名称]

于 2013-04-10T13:13:39.993 回答