我有一个我本应该提交的文件,但忘了一切。我继续对文件进行更多更改。我想要做的是恢复到我应该已经提交的地方,在那时做一个提交,但仍然得到我的新更改。我如何以最经济的方式做到这一点?
感谢。
编辑:只是解释一下流程。
我现在要做的是保存我最近的更改(因此git stash可能在这里派上用场,谢谢!)回到第二个项目符号,提交,然后继续。有没有办法达到中间未提交的观点?
进一步编辑:
我认为我不能解释的是,上面第二点有没有提交。在该状态中,它不属于先前的提交,而是属于尚不存在的新提交。
答案 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)
如果这只是之前的提交,您可以随时修改它。否则最经济的方法就是单独提交文件。除非您有特殊原因不这样做,否则没有任何伤害。