git - 如何撤消对本地提交文件的更改

git - How to undo changes to a locally committed file

我一直关注,一直在我的本地 BranchA:

  1. 修改FileA(错误)
  2. git add FileA
  3. git commit -m "Modified FileA"

因此,FileA 在我的本地分支 BranchA 上的本地提交(从未推送到远程)(也从未推送到远程)。

如何恢复对 FileA 的更改?

更新以及我是如何解决的

我从 SourceTree 而不是从 git 撤消了对 FileA 的更改,因为我意识到这对我来说更简单。

为此,在 SourceTree 中,在提交的文件 FileA > "Log Select ..." > select 上一次提交(你之前的提交)> r-c 上选择 "Reset to this commit"。完成了工作,但谢谢大家

您可以使用 git reset HEAD~1 将当前分支索引重置为上一次提交。添加 --hard 以重置您的工作目录,或者如果您想细化更改并重新提交,请将其关闭。

如果您从那时起进行了其他更改,请先使用 git rebase 将有问题的提交移至堆栈顶部。

具体撤消该文件中的更改但保持提交不变:

1) 将文件 A 恢复到之前的状态

git checkout HEAD^ -- path/to/fileA

2) 包括你在 BranchA 上所做的最后一次提交

git commit --amend

(而且还没有推过,下次不用用力推了)

首先你将你的分支重置为之前的提交:

git reset @^ --mixed

然后您可以使用 checkout 将特定文件重置为旧状态:

git checkout -- files...

完成后,您可以重新提交更改:

git add files...
git commit -m "message"

另一种方法(我假设你的提交只在文件中发生了变化,你想丢弃):

在你的 BranchA

git rebase -i HEAD~2

它将给出两个提交的列表,按历史升序排列。最后一个是你想改变的。所以,你想放弃那个提交。将光标移动到第二个提交,而不是 pick 键入 drop,或者只是 d.

保存您的更改(取决于您的编辑器,对于 nano 或 [=19,可能是 CTRL+X + SHIFT+Y =] vim,就是这样。