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