我错误地提交了代码并将其从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的新手。
答案 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~