我修改了许多文件并提交了更改。
我注意到有3个我不应该修改的文件,我希望它们恢复到原来的状态,但是我不想重置为先前的提交,因为我没有不想丢失其他文件更改。我该怎么做?
答案 0 :(得分:3)
如果您尚未推送,因此您的提交目前仅在本地进行,那么将是一个简单的过程
# restore these 3 files to their previous state
git checkout HEAD^ -- path/to/file1 path/to/file2 path/to/file3
# include these changes...
git add path/to/file1 path/to/file2 path/to/file3
# ... in last commit
git commit --amend
但是,如果您已经已经推送,则有两种基本方案:
1)要么,要么您独自在此存储库上工作,要么共享该存储库,但在该分支上单独工作(通常是功能分支,但取决于您的工作流程)
上面的过程很好,只是要知道,下次您要推送到遥控器时,必须在push命令中使用-f
标志来强制更新旧的ref
2)或,这是一个共享分支,其历史记录无法更改而不会造成麻烦
然后要避免上面的过程,即重写历史记录。相反,您只需要在末尾省略--amend
参数,它将进行一个新提交,其中仅包含文件的最后修改。比起初提交它要优雅,但您没有更改历史记录,而且文件也很好。