我如何将修改的文件转换为以前的修订,在一个特定的 commit hash (我通过 git log 和 git diff 确定)?


当前回答

您可以使用任何引用到一个 git 承诺,包括 SHA-1 如果这是最方便的。

git checkout [commit-ref] -- [文件名]

其他回答

假设你想要的承诺的哈希是c5f567:

git checkout c5f567 -- file1/to/restore file2/to/restore

git checkout man 页面提供更多信息。

如果你想在 c5f567 之前返回承诺,添加 ~1 (在 1 是你想返回的承诺的数量,它可以是任何东西):

git checkout c5f567~1 -- file1/to/restore file2/to/restore

作为一个侧面注意事项,我一直对这个命令不舒服,因为它用于普通事物(分支之间的变化)和不寻常的破坏性事物(工作目录的变化)。


有一个新的 git 恢复命令,它是专门设计的恢复工作复制文件已被修改。 如果你的 git 足够新,你可以使用这个命令,但文档来了一个警告:

这个命令是实验性的,受害者可能会改变。

如果您在最后的命令中犯下错误的文件,请遵循指示:

开源树,改变这个承诺

此分類上一篇

更改行,并找到你的承诺,错误的文件发送为承诺

此分類上一篇

你可以看到你的更改列表在这个承诺选择它,然后点击... 按钮右侧... 点击逆文件,然后你可以看到它在文件状态选项卡在左侧下方然后点击不步骤:

此分類上一篇

打开您的视觉工作室代码,然后返回,完成您的删除文件之后,您可以在源树上看到您的最后一个承诺的结果。

此分類上一篇

首页 > 首页 > 目标文件

git reset HEAD path_to_file

第二次检查该文件

git checkout -- path_to_file

对于“a.txt”,“b.txt”,“c.txt”文件:

git revert -n <commit>(例如 git revert -n HEAD 要重新重新重新重新重新重新重新重新重新重新重新重新重新重新重新重新重新重新重新重新重新重新重新重新重新重新重新重新重新重新重新重新重新重新重新重新

使用 git log 获取特定版本的 hash 密钥,然后使用 git checkout <hashkey>。

注意:不要忘了在最后一个之前输入哈希,最后一个哈希标记了您的当前位置(头部)并不会改变任何东西。