几周前我做了一个旧的提交。我想从该提交中仅恢复单个文件。我该怎么办?
git checkout 'master@{7 days ago}' -- path/to/file.txt
这不会改变HEAD,它只会覆盖本地文件path/to/file.txt
请参阅man git-rev-parse了解可能的修订规范(当然,简单的哈希(如dd9bacb
)可以很好地执行)
不要忘记提交更改(审核后......)
git checkout [Revision_Key] -- path/to/file
查看旧提交中的文件。我需要恢复最近提交到git的文件。因此,只需重申并提供另一个视角,您需要通过运行以下两个步骤来执行此操作:
还有很多其他方法可以做到这一点。但这个是我能记住的更简单的一个。希望有所帮助。
注意:如果您在项目路径/文件夹中,则无需在checkout命令中键入完整文件的路径。
所有答案都提到git checkout <tree-ish> -- <pathspec>
。从git v2.23.0开始,有一个新的git restore方法,该方法应该承担git checkout
负责的部分内容。查看github blog变化的重点。
此命令的默认行为是使用来自source
参数的内容(在您的情况下将是提交哈希)恢复工作树的状态。
假设提交哈希是abcdef
,命令将如下所示:
git restore --source=abcdef file_name
(默认情况下)将其放入工作树中。如果您想将更改直接放在索引中,那么可以立即提交:
git restore --source=abcdef --worktree --staged file_name
或者使用短选项名称:
git restore -s=abcdef -W -S file_name