Git 是否将提交的文件还原为其在master中的版本?

Git 是否将提交的文件还原为其在master中的版本?,git,git-revert,Git,Git Revert,我修改了许多文件并提交了更改 我注意到有3个文件我不应该修改,我希望它们恢复到主控中的状态,但我不想重置为以前的提交,因为我不想丢失其他文件更改。如何实现这一点?如果您还没有推送,那么您的提交现在只是本地的,那么一个简单的过程就是 # restore these 3 files to their previous state git checkout HEAD^ -- path/to/file1 path/to/file2 path/to/file3 # include these chang

我修改了许多文件并提交了更改


我注意到有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
参数,它将进行新的提交,其中只包含对文件的最后修改。比一开始就提交它更不优雅,但是你没有改变历史,你的文件也很好