协慌网

登录 贡献 社区

单个文件的硬重置

我目前在工作目录中有三个已修改的文件。但是我希望其中一个重置为 HEAD 状态。

在 SVN 中,我使用svn revert <filename> (如果需要,然后是svn update <filename> )但是在 git 中我应该使用git reset --hard 。但是,此命令无法在单个文件上运行。

有没有办法在 git 中丢弃单个文件更改并用新的 HEAD 副本覆盖它?

答案

您可以使用以下命令:

git checkout HEAD -- my-file.txt

... 将使用 HEAD 更新my-file.txt的工作副本及其在索引中的状态。

--基本上意味着: 将此点之后的每个参数视为文件名这个答案的更多细节。感谢VonC指出这一点。

重置为头:

要将单个文件硬重置为 HEAD:

git checkout @ -- myfile.ext

请注意, @HEAD缩写。旧版本的 git 可能不支持缩写形式。

重置为索引:

要将单个文件硬重置为索引 ,假设索引为非空,否则为 HEAD:

git checkout -- myfile.ext

关键在于,为了安全起见, 您不希望从命令中省略@HEAD ,除非您特别指的是重置为索引

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

git checkout upstream/master -- myfile.txt