GIT:忘了承诺并做出了新的改变。如何撤消新更改,然后提交重做更改?

时间:2011-12-23 02:26:58

标签: git

我有一个我本应该提交的文件,但忘了一切。我继续对文件进行更多更改。我想要做的是恢复到我应该已经提交的地方,在那时做一个提交,但仍然得到我的新更改。我如何以最经济的方式做到这一点?

感谢。

编辑:只是解释一下流程。

  • 我的file.php已经提交并且处于工作状态。
  • 我对file.php进行了更改,这是file.php的新生产副本。此文件已提交,但应该是。
  • 我对file.php进行了更多更改,并记住我想提交file.php。

我现在要做的是保存我最近的更改(因此git stash可能在这里派上用场,谢谢!)回到第二个项目符号,提交,然后继续。有没有办法达到中间未提交的观点?

进一步编辑:

我认为我不能解释的是,上面第二点有没有提交。在该状态中,它不属于先前的提交,而是属于尚不存在的新提交。

4 个答案:

答案 0 :(得分:3)

您无需撤消更改,只需使用git add --interactive

即可

答案 1 :(得分:2)

如果通过“忘记提交”你的意思是忘记“推”,那么......有希望:)

如果您已将之前的更改提交到本地git仓库,则可以使用git stash将新更改保存在“存储”中并还原它们。 (您可以使用相同的命令从存储中恢复更改..请参阅链接)

答案 2 :(得分:2)

如果您尚未提交,可以使用git stash:

git stash
git add newfile
git commit --amend # update old commit that should have had the file added
git stash pop # unsaved changes restored and merged

否则,您需要立即提交文件,隐藏所有其他更改,并使用git rebase --interactive将提交移回历史记录中的位置。

请注意,如果您已经被推送,这会给其他人带来问题 - 在这种情况下,您可能只是提交您现在的位置。

答案 3 :(得分:1)

如果这只是之前的提交,您可以随时修改它。否则最经济的方法就是单独提交文件。除非您有特殊原因不这样做,否则没有任何伤害。