Answers:
git checkout 'master@{7 days ago}' -- path/to/file.txt
这不会改变HEAD,只会覆盖本地文件 path/to/file.txt
请参阅man git-rev-parse以获取可能的修订说明(当然,简单的哈希(如dd9bacb
)会很好地完成)
别忘了提交更改(经过审核...)
revision-specification
,因为这是该任择议定书要求:)
shacommit~1
(ex git checkout 0f4bbdcd~1 -- path/to/file.txt
:)即可立即获得提交。
git checkout [Revision_Key] -- path/to/file
。git checkout
可以处理单个文件(请参见sehe的答案),无需复制和粘贴。
HEAD
,ORIG_HEAD
或任何与那些结合^
/ ~
/ @
风格的符号。
我需要恢复提交到git中的最新文件。因此,只需重申一下并给出另一种观点,您需要通过运行以下两个步骤来做到这一点:
git log -3
这显示了三个最近的提交。阅读评论和作者的姓名,以便缩小所需的确切版本。写下您想要的提交版本的长提交ID(即b6b94f2c19c456336d60b9409fb1e373036d3d71)。
git checkout b6b94f2c19c456336d60b9409fb1e373036d3d71-myfile.java
传递提交ID和要还原的文件名。确保双连字符前后都有空格。
还有许多其他方法可以做到这一点。但这是我记得较简单的一个。希望能有所帮助。
注意:如果您位于项目路径/文件夹中,则无需在checkout命令中键入完整文件的路径。
所有答案都提及git checkout <tree-ish> -- <pathspec>
。从git v2.23.0开始,有一个新的git restore方法,应该假定它git checkout
负责其中的一部分。在github博客上查看更改的要点。
此命令的默认行为是使用来自source
参数的内容(在您的情况下为提交哈希)恢复工作树的状态。
假设提交哈希为abcdef
以下命令:
git restore --source=abcdef file_name
(默认情况下)将其放入工作树中。如果要直接将更改放入索引中,以便可以立即提交:
git restore --source=abcdef --worktree --staged file_name
或使用简短的选项名称:
git restore -s=abcdef -W -S file_name