Git:将单个文件还原为其最后一次提交[重复]

Posted

技术标签:

【中文标题】Git:将单个文件还原为其最后一次提交[重复]【英文标题】:Git: Revert a single file to its last commit [duplicate] 【发布时间】:2020-08-27 07:35:54 【问题描述】:

我想将文件恢复到上次提交时的状态。

我已经修改、添加和提交了其他文件。 但是有一个文件我没有暂存。

我想将它的状态(仅该文件的状态)恢复到该文件提交的最后一次提交。

换句话说,我只想忽略对该文件所做的最后更改并将其恢复到它参与提交的最后一点。

【问题讨论】:

git checkout commit-hash -- file ? 你没有提交文件? 请注意,上面建议的副本是关于复制特定的 committed 版本;您已要求复制出 current 提交的版本,这很容易通过 HEAD 命名,但也建议您可以采用当前的 staged 版本 — Git当 Git 提取您正在处理的提交时,它会自行上演——这就是 glco's answer 所做的。 谢谢@torek,这正是我想做的。但我认为有一种更简单的方法,更多的文件可以做到这一点。 不管怎样,不知道为什么他们关闭了这个话题,我没有看到它和另一个一样。即使他们有相同的答案。 【参考方案1】:

你可以使用:

    git checkout <file-with-path>

或者

    git restore <file-with-path>

如果您已经提交了文件,Git checkout 会起作用。如果文件已经暂存,您也可以将 --staged 标志添加到 git restore 以恢复它。

https://git-scm.com/docs/git-restore

【讨论】:

这不是 OP 要求做的,但考虑到 OP 的描述,它实际上可以正常工作。但是请注意git restore --staged,它不会更新工作树副本;使用 git restore --staged --work-tree 更新 both 副本,但也需要 --source 选项。命令git restore --source HEAD -s -w path/to/filegit checkout HEAD -- path/to/file 做同样的事情,也适用于这里。 抱歉,为什么我的 git 无法将 restore 识别为命令? 无论如何,git checkout 命令有效,谢谢@gIco

以上是关于Git:将单个文件还原为其最后一次提交[重复]的主要内容,如果未能解决你的问题,请参考以下文章

Git瓷器命令将单个文件恢复为其HEAD状态但保持其分阶段状态?

用于一次性添加(不提交)所有新文件的 Git 命令 [重复]

Git使用说明

sh Git:将文件还原为特定提交

如何 git 还原一个特定文件的更改,而我的提交更改也涉及其他文件? [复制]

git 还原某个文件到之前的版本