从分支中删除提交和相关更改

时间:2013-04-09 14:34:30

标签: git

git log 

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

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

但是,我不想恢复到该提交ID,我只想将其从分支中删除,以便下次当我执行git log时,它将无法在列表中显示。提前完成。

编辑,对不起我的错误解释,当我说删除提交ID时,我的意思是删除所有相关更改。

3 个答案:

答案 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]