我不小心搞错了分支。 如何删除该提交?


当前回答

删除最近的提交,保留你所做的工作:

git reset --soft HEAD~1

删除最近的提交,破坏你所做的工作:

git reset --hard HEAD~1

其他回答

删除最近的提交,保留你所做的工作:

git reset --soft HEAD~1

删除最近的提交,破坏你所做的工作:

git reset --hard HEAD~1

不要删除它:因为只有一个提交git就足够了。

但是如果你在错误的分支上提交了几次,这就是git rebase——onto发光的地方:

假设你有这个:

 x--x--x--x <-- master
           \
            -y--y--m--m <- y branch, with commits which should have been on master

,然后你可以标记master并将其移动到你想要的位置:

 git checkout master
 git branch tmp
 git checkout y
 git branch -f master

 x--x--x--x <-- tmp
           \
            -y--y--m--m <- y branch, master branch

,将y分支重置到原来的位置:

 git checkout y
 git reset --hard HEAD~2 # ~1 in your case, 
                         # or ~n, n = number of commits to cancel

 x--x--x--x <-- tmp
           \
            -y--y--m--m <- master branch
                ^
                |
                -- y branch

,最后移动你的提交(重新应用它们,生成新的提交)

 git rebase --onto tmp y master
 git branch -D tmp


 x--x--x--x--m'--m' <-- master
           \
            -y--y <- y branch

以下命令对我有效,所有本地提交的更改都被删除&本地被重置为与远程源/主分支相同。

Git重置——硬源

我想知道为什么我找到的最好的答案只在评论里!(作者:丹妮丝,领先86票)

git reset --hard origin

此命令将同步本地存储库与远程存储库,从而消除您在本地所做的所有更改。 您还可以按照Cleary在评论中建议的那样,执行以下操作来获取您在原点中拥有的确切分支。

git reset --hard origin/<branch>

执行git rebase -i FAR_ENOUGH_BACK并删除你不想要的提交行。