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

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


当前回答

我通常首先会发现我最近所作所为的杂草:

git log

看起来是这样的: 执行{long_hash}

复制此长 Hash 并重置它( 回到相同的文件/ 声明在其中) :

git reset --hard {insert long_hash without braces}

其他回答

键入 git 日志, 并找到最后一次承诺的散列代码, 然后输入 :

git reset <the previous co>

如果您已经安装了 Git Explos, 您可以运行 Git 撤消以撤销最近的承诺 。 git 撤消 3 将撤销最后的 3 个承诺 。

这将添加一个新的承诺, 删除所添加的文件 。

git rm yourfiles/*.class
git commit -a -m "deleted all class files in folder 'yourfiles'"

或者您可以重写历史来撤销最后一项承诺 。

警告:此命令将永久删除对.java 文件( 和任何其他文件) 所做的修改 -- 从工作目录中删除所有修改 :

git reset --hard HEAD~1

硬重置为 HEAD-1 将把您的工作副本设定为您错误实施前的行为状态 。

通常情况下, 您想要撤销一项承诺, 因为您犯了一个错误, 您想要修正它, 基本上就是 OP 提问时所做的。 真的, 您真的想要重做一次承诺 。

这里的大多数答案都集中在命令行上。 虽然命令行是使用Git的最佳方法, 当你对它感到舒服的时候, 它可能与来自其他版本控制系统到 Git 的人有点不同。

使用 GUI 如何操作。 如果您安装了 Git, 您已经拥有了所有您需要遵守的指示 。

注意: 我在此假设您在推动前意识到承诺是错误的。 如果您不知道推力意味着什么, 那么您可能还没有被推动。 继续执行指令。 如果您推动了错误承诺, 最危险的方法就是跟踪错误承诺, 并做出新的修正, 而在版本控制系统中, 您会这样做, 不允许您重写历史 。

使用图形用户界面来修正你最近的过错:

导航到命令行的仓库, 并用 git gui 选择“ 修正最后一项承诺 ” 启动 GUI 。 您将会看到您上次的承诺信件、 您所准备的文件 以及您没有的文件 。 现在更改了您想要它们如何查看和单击 COD 。

为了消除(所有变化)最后承诺、最后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服务。