2023-03-20 10:00:02

单个文件的硬重置

如何放弃对单个文件的更改并用新的HEAD副本覆盖它?我想做git重置——很难只做一个文件。


当前回答

要将my-file.txt的工作副本及其在Git索引中的状态重置为HEAD的状态,请执行以下操作:

git checkout HEAD -- my-file.txt

--意思是“将此点之后的每个参数视为文件名”。更多详情请参见此答案。感谢VonC指出这一点。

其他回答

可以使用以下命令:

git checkout filename

如果分支具有相同的文件名,则必须使用以下命令:

git checkout -- filename

要恢复到上游/主节点,请执行以下操作:

git checkout upstream/master -- myfile.txt

自Git 2.23(2019年8月)以来,您可以使用restore(更多信息):

git restore pathTo/MyFile

上述操作将在当前分支上恢复HEAD上的MyFile(最后一次提交)。

如果您想从其他提交中获取更改,则可以在提交历史记录上进行倒退。下面的命令将在最后一次提交之前获取MyFile两次提交。现在需要-s(--source)选项,因为现在在还原源时使用master~2而不是master(默认值):

git restore -s master~2 pathTo/MyFile

您也可以从其他分支获取文件!

git restore -s my-feature-branch pathTo/MyFile

可以使用以下命令重置单个文件

git checkout HEAD -- path_to_file/file_name

使用以下命令列出所有更改的文件以获取path_to_file/filename

git status

可以使用以下命令:

git重置--my-file.txt

这将在添加时更新my-file.txt的工作副本。