[英]git - How to undo changes to a locally committed file
我一直在本地BranchA
上执行以下BranchA
:
FileA
(错误)git add FileA
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.