我无意中把错误的文件给了Git, 但还没有把承诺推到服务器上。

我如何从当地存储库撤销这些承诺?


当前回答

在我的情况中,我承诺并推向错误的分支, 所以我想要的是把全部的改变都收回来, 这样我就可以把它们投向一个新的正确的分支, 所以我做了这个:

在您承诺和推动的同一分支上, 如果您输入“ gitt status” 键入“ git status” 状态, 您将不会看到任何新事物, 因为您承诺和推动, 现在键入 :

    git reset --soft HEAD~1

这将将您所有的更改( 文件) 重新回到舞台区域, 现在把它们重新回到工作目录( 非阶段) 中, 您只要输入 :

git reset FILE

“ 文件” 是您想要再次承诺的文件 。 现在, FILE 应该在工作目录中, 包含您所做的全部更改 。 现在您可以更改为您想要的分支, 并对该分支进行更改 。 当然, 您承诺的初始分支仍然有所有更改, 但对于我来说, 如果不是您的话, 您可以寻找恢复该分支承诺的方法 。

其他回答

我找到了这个网站 用来描述如何撤销 你对存储库的承诺

一些命令 :

git commit --amend        # Change last commit
git reset HEAD~1 --soft   # Undo last commit

为了消除(所有变化)最后承诺、最后2承诺和最后n承诺:

git reset --hard HEAD~1
git reset --hard HEAD~2
...
git reset --hard HEAD~n

在做出具体承诺后,要消除任何东西:

git reset --hard <commit sha>

例如,

git reset --hard 0d12345

谨慎使用硬选项 : 它会同时删除您回购的本地更改, 并返回到上一个提及的承诺 。 您只应该运行此选项, 前提是您确定您在最后一次承诺中搞砸了, 并且想要回到过去 。

作为副注释,大约7个承诺的散列字母就足够了,但在更大的项目中,你可能需要最多12个字母才能独有。如果您愿意,也可以使用整个承诺的 SHA 。

上述命令在GitHub也为Windows服务。

IntelliJIDEA 您可以按 Alt+9 键右键单击承诺列表中的某些标签打开 Git 仓库日志, 然后选择 : “ 将当前分支重置到这里... ” 。

git revert commit

这将产生与您想要返回的承诺相反的变化, 然后再进行这种改变。 我认为这是最简单的方式 。

http://git-scm.com/docs/git-revert https://git-scm.com/docs/git-revert

撤销上次承诺 :

git reset --soft HEAD^ or git reset --soft HEAD~

这将撤销最后一项承诺 。

在这里 -- 软意味着重置中。

HEAD~ 或 HEAD_ 意思是移动 在 HEAD 之前承诺。

替换上次承诺的新承诺:

git commit --amend -m "message"

它将以新承诺取代最后一项承诺 。