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

时间:2019-02-22 20:10:57

标签: git git-commit revert

我一直在本地SELECT name, max(datetime) FROM ( SELECT * FROM `requests` ORDER BY datetime ) a group by name 上关注:

  1. 修改BranchA(错误)
  2. FileA
  3. git add FileA

因此,git commit -m "Modified FileA"位于我的本地分支FileA(也从未推送到远程)的本地提交中(从未推送到远程)。

如何将更改恢复到FileA?

更新和解决方法

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

要执行此操作,请在SourceTree中,对提交的文件FileA进行r-c>“日志选择...”>选择上一个提交(在您之前的提交)> r-c,然后选择“重置为此提交”。做到了,但谢谢大家

4 个答案:

答案 0 :(得分:4)

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

1)将文件A恢复为以前的状态

git checkout HEAD^ -- path/to/fileA

2)包括在您对BranchA所做的最后一次提交中

git commit --amend

(由于尚未被推动,因此下次无需强行推动。)

答案 1 :(得分:2)

首先,您将分支重置为上一次提交:

git reset @^ --mixed

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

git checkout -- files...

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

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

答案 2 :(得分:1)

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

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

答案 3 :(得分:1)

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

在您的分支机构中

git rebase -i HEAD~2

它将给出两个提交的列表,按历史顺序升序排列。最后一个是您要更改的内容。因此,您想放弃该提交。将光标移至第二个提交,而不是pick键入drop或仅输入d

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