Git 有没有办法将更改从特定文件恢复到最新提交?

Git 有没有办法将更改从特定文件恢复到最新提交?,git,Git,我只是添加了>提交>推送,一切都很好。然后做了很多改变,做了更多的推动。但是现在有一个文件有缺陷,我只需要将该文件恢复到最新提交的文件,而不是整个项目。我如何做到这一点而不丢失其余的更改 这对我很有效: git status // showing all the files I changed after the commit. 正如您在日志中看到的,它说:(使用“git checkout…”放弃工作目录中的更改),因此: git checkout -- <filename as it

我只是添加了>提交>推送,一切都很好。然后做了很多改变,做了更多的推动。但是现在有一个文件有缺陷,我只需要将该文件恢复到最新提交的文件,而不是整个项目。我如何做到这一点而不丢失其余的更改

这对我很有效:

git status // showing all the files I changed after the commit. 
正如您在日志中看到的,它说:
(使用“git checkout…”放弃工作目录中的更改)
,因此:

git checkout -- <filename as it shows in git status log>
git签出--

我认为您误解了git reset的功能。有几种方法可以使用此命令。如果您已经做了一些更改,但不想提交它们,那么可以使用
git-rest--hard-HEAD
放弃所有更改。这不会更改任何现有的提交历史记录。它仅更改当前工作目录的内容


如果要将本地副本还原回最新提交,但仍然保存所做的更改以便以后引用,可以使用
git stash
。稍后
git stash pop
git stash apply
将恢复最近的存储。

您所说的“不重置磁头”是什么意思?您试图避免什么问题?我只是不想使用git reset head来移除头部。
git reset--hard
(可以选择与类似于
git clean-xf的东西结合使用)或多或少是消除未提交更改的规范方法。我想我不太明白不想这样做的动机:/@DragonKnight
git reset HEAD
不会从提交历史记录中删除任何内容。感谢您的回复。如果没有,这些功能是什么
git reset--hard abcdefg
git reset--soft HEAD@{1}
如果我应用了这些命令,为什么在reflog中再也看不到我的commit?