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

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


当前回答

更改上次承诺

替换索引中的文件 :

git rm --cached *.class
git add *.java

那么,如果它是私人分支, 修改承诺:

git commit --amend

或者,如果它是共享分支, 做出新的承诺:

git commit -m 'Replace .class files with .java files'

(要改变先前的承诺, 请使用惊人的互动重置 。 )


ProTipTM: 添加 *. class to a gitignore 来阻止这种情况再次发生 。


收回承诺

修改承诺是理想的解决办法,如果您需要更改最后的承诺,但更一般性的解决办法被重置。

您可以将 Git 重置为任何承诺 :

git reset @~N

N是总部行政领导之前的承付次数, 重划为上一个承付次数。

您不必修改承诺,而是可以使用:

git reset @~
git add *.java
git commit -m "Add .java files"

检查 git 帮助重置, 特别是 -- -- oft -- mixed 和 -- hard 上的章节, 以便更好地了解它的作用 。

reflog 格式

如果你搞砸了,你总是可以使用折叠式折叠式折叠式折叠式折叠式折叠式折叠式折叠式折叠式折叠式折叠式折叠式折叠式折叠式折叠式折叠式折叠式折叠式折叠式折叠式折叠式折叠式折叠式折叠式折叠式折叠式折叠式折叠式折叠式折叠式折叠式折叠式折叠式折叠式折叠式折叠式

$ git reset @~
$ git reflog
c4f708b HEAD@{0}: reset: moving to @~
2c52489 HEAD@{1}: commit: added some .class files
$ git reset 2c52489
... and you're back where you started

其他回答

使用此命令( 在顶部的日志 1 中, 这是最新命令) 获取上次的 身份确认 :

git log

获取执行 ID (GUID) 并运行此命令 :

git revert <commit_id>

只需撤销最后一项承诺 :

git reset --soft HEAD~

或撤销上次承诺前的时间 :

git reset --soft HEAD~2

或撤销先前的任何承诺 :

git reset --soft <commitID>

(您可以通过 git reflog 获得对帐号)

当您撤销上一个任务时, 记住要用

git clean

更多信息,请查看文件:git-resets。

单一个命令 :

git reset --soft 'HEAD^' 

成功推翻了当地最后的承诺!

git 重置 HEADn} 会重置您最后的 n 动作 。

对于重置, 对于上一个动作, 使用 git 重置 HEAD\\\ 1} 。

认为我们已经有了 code. txt 文件。 我们对其做了一些修改并承诺。 我们可以以三种方式撤销此承诺, 但首先, 您应该知道什么是预置文件... 一个预设文件是一个可以承诺的文件。 如果您运行 git 状态, 此文件将会显示为绿色颜色, 如果它没有被预设用于承诺, 将会显示为红色颜色 :

意思是如果您承诺更改, 此文件中的更改没有被保存 。 您可以在您的舞台上添加此文件, 添加 code. txt , 然后进行更改 :

撤消上次承诺 :

现在,如果我们想要在不做其他任何更改的情况下撤销承诺, 我们可以使用 git 重设 -- soft HEAD * 如果我们想要撤销承诺及其更改( THIS 是危险的, 因为您的更改将会丢失) , 我们可以使用 git 重置 -- 硬 HEAD * 如果我们想要撤销承诺并删除舞台上的更改, 我们可以使用 git 重置 -- mixed HEAD* 或短格式的 git 重置 HEAD***