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

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


当前回答

作为以下步骤。

步骤1

Hit git 日志

从日志列表中找到最后的硬化散列代码, 然后输入 :

步骤2

git reset <hash code>

其他回答

我想撤销我们共享存储库中最新的五个承诺。 我查了我想回溯到的订正代号 。 然后我输入了下面的内容 。

prompt> git reset --hard 5a7404742c85
HEAD is now at 5a74047 Added one more page to catalogue
prompt> git push origin master --force
Total 0 (delta 0), reused 0 (delta 0)
remote: bb/acl: neoneye is allowed. accepted payload.
To git@bitbucket.org:thecompany/prometheus.git
 + 09a6480...5a74047 master -> master (forced update)
prompt>

只要使用 git 重置它执行下面的命令 :

git reset --soft HEAD~1

解释 : git 重设做什么, 它基本上是重置到任何您想要返回的承诺, 然后如果它与 -- soft 键合并, 它会返回, 但保留您文件中的更改, 所以您回到刚刚添加文件的阶段, HEAD 是分支的头部, 如果您和 ~ 1 合并( 在此情况下, 您也使用 HEAD+) , 它只会返回一个您想要的...

我为您创建了以下图像中的步骤, 详情更多, 包括所有在真实情况下可能发生的步骤, 并承诺执行代码 :

git diff + 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

在视觉工作室中,只需返回您的承诺, 然后将它与自动创建的返回承诺一起推。 全部显示在下面的屏幕镜头中 。 @ info: status