如何在master上取消提交代码

时间:2016-02-19 18:18:36

标签: git bash github

我错误地提交了代码并将其从GIT Bash推送到master,而不是将新代码提交到新分支,然后合并到master分支。

如何撤消对master分支的提交。我的头部是40b66b17

尝试以下选项:

<MY_ID>@<Machine> MINGW32 /c (master)
$ git reset --hard 40b66b17
HEAD is now at 40b66b1 Add Components draft 



<MY_ID>@<Machine> MINGW32 /c (master)
$ git push -f origin master

Everything up-to-date


<MY_ID>@<Machine> MINGW32 /c (master)
$ git show ORIG_HEAD
commit 40b66b17540f0ac5aa6ec83b8c843b7e9674e063
Author: My Name <My Email Id>
Date:   Wed Feb 17 11:14:17 2016 -0600

    Add Components draft 

diff --git a/File1 b/File2
new file mode 100644

当我看到当前的HEAD指针时,它仍显示在同一个地方。我希望我的主人干净,没有任何提交。我在这里对术语道歉。因为我是GIT的新手。

1 个答案:

答案 0 :(得分:6)

好吧,如果你已经推了它,其他人可能已经拉过了,我会建议进行任何历史重写,例如git reset。但是,如果您是唯一一个使用回购的人,或者确定自上次推送以来没有人拉过,请执行以下操作:

git checkout master
git reset --soft head~
git checkout -b my-feature-branch
git commit -m "My message"
git checkout master
git push -f

这会将您的上次提交从master移至my-feature-branch

现在,如果您不确定某人是否已经提取过您的提交,那么最安全的做法就是撤消提交的效果。这样做:

git revert HEAD
git push
git checkout -b my-feature-branch
git cherry-pick HEAD~