繁体   English   中英

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

[英]git - How to undo changes to a locally committed file

我一直在本地BranchA上执行以下BranchA

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

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

如何恢复对 FileA 的更改?

更新以及我如何解决它

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

为此,在 SourceTree 中,对已提交的文件 FileA 进行 rc >“日志选择...”> 选择上一个提交(在您之前的提交)> 对其进行 rc 并选择“重置为此提交”。 那完成了工作,但谢谢大家

要专门撤消该文件中的更改但保持提交不变,否则:

1) 将 fileA 恢复到之前的状态

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"

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

如果此后您进行了其他更改,请先使用git rebase将违规提交移至堆栈顶部。

另一种方法(我假设您的提交仅在文件中有更改,您想丢弃):

在你的分行A

git rebase -i HEAD~2

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

保存您的更改(取决于您的编辑器,对于nano可以是CTRL + X + SHIFT + Y或者对于vim可以是:wq ,就是这样。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM