git log
将列出当前分支上的所有提交,假设我有三个提交,并且我想删除中间的一个,您可以建议以下命令:
git reset --hard <sha1-commit-id>
但是,我不想恢复到那个提交 id,我只想将它从分支中删除,所以下次我这样做时git log
它不会出现在列表中。提前谢谢。
编辑,抱歉我的解释失误,当我说删除提交 ID 时,我的意思是删除所有相关的更改。
git log
将列出当前分支上的所有提交,假设我有三个提交,并且我想删除中间的一个,您可以建议以下命令:
git reset --hard <sha1-commit-id>
但是,我不想恢复到那个提交 id,我只想将它从分支中删除,所以下次我这样做时git log
它不会出现在列表中。提前谢谢。
编辑,抱歉我的解释失误,当我说删除提交 ID 时,我的意思是删除所有相关的更改。
提交是否也在远程分支上?根据对此的答案将确定您应该做什么。
如果不是,请执行git rebase -i <sha before the one you want to remove>
这将允许您删除提交。
如果它在遥控器上,您不想删除它。你最终会导致推拉问题。推送后重写历史是一件坏事。所以对于那种情况你想要git revert <sha that you want to remove>
。这将创建一个撤消更改的新提交。
要有效地撤消该提交中的更改并将其从历史记录中删除,您可以执行以下操作:
git rebase --onto HEAD^^ HEAD $BRANCH
$BRANCH
您当前所在的分支的名称在哪里。
或者,您可以检查较旧的提交,然后挑选较新的提交:
TIP=`git rev-parse HEAD`
git reset --hard HEAD^^
git cherry-pick $TIP
请记住,这两个操作都会更改历史记录,git push --force
如果您已经发布了这些提交,这将需要一个操作。
使用命令
git rebase -i HEAD~N
假设您不想要第二次提交,N 将是 2.. 一旦您以 N=2 的值运行此命令,git 将提示您采取行动.. 只需删除您不想要的提交的行,它将被删除.. .
并删除标签使用
git tag -d [标签名称]