我无意间把错误的档案 写错给Git 基特,但还没有将承诺推进到服务器上。

我如何解除那些承诺?当地当地仓库?


当前回答

撤消上次承诺 :

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

这将撤销最后一项承诺 。

--soft意思是重置为中位 。

HEAD~HEAD^意思是移动以在 HEAD 之前承诺 。


替换上次承诺的新承诺 :

git commit --amend -m "message"

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

其他回答

每次我需要撤销承诺/承诺时,我要做的是:

  1. git reset HEAD~<n>/ 上次承诺的数量, 我需要撤销

  2. git status/ 可选。 所有文件现在都红色( 未预设 ) 。

  3. 现在,我可以添加并只承诺我所需要的文件 :

  • git add <file names> & git commit -m "message" -m "details"
  1. 可以选择:我可以将其它文件的更改(如果需要的话) 推回到它们以前的状态, 并进行退票:
  • git checkout <filename>
  1. 如果我已经把它推向了遥远的起源, 之前:
  • git push origin <branch name> -f用 -f来强迫推

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

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

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

警告警告警告警告:此命令将永久删除对《京都议定书》的修改.java您承诺的文件( 和任何其他文件) -- 从工作目录中删除全部修改 :

git reset --hard HEAD~1

缩略hard resetHEAD-1您的工作副本将在您错误犯罪之前设定为犯罪状态 。

每个人都以如此复杂的方式发表意见。

如果您想要从分支中删除最后一项承诺, 最简单的方法是:

git reset --hard HEAD~1

现在,为了摆脱你最后的承诺,你必须

git push --force

这就对了,这会消除你最后的承诺

如果您想要撤销在回邮中的第一个承诺

你会遇到这个问题:

$ git reset HEAD~
fatal: ambiguous argument 'HEAD~': unknown revision or path not in the working tree.
Use '--' to separate paths from revisions, like this:
'git <command> [<revision>...] -- [<file>...]'

发生错误的原因是,如果最后一次承诺是存储处的初始承诺(或没有父/母),则不存在 HEAD~ 。

解决方案

如果您想要重置“ master” 分支上唯一的承诺

$ git update-ref -d HEAD
$ git rm --cached -r .

我发现这笔该网站描述如何撤销您在存储库中的承诺 。

一些命令 :

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