使用Git重置或还原特定的文件到特定的修订?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (46)

我已经对一个文件做了一些修改,该文件已经作为文件组的一部分提交了几次,但是现在希望将对它的更改重置/还原回以前的版本。

我做了一个git log连同一个git diff要找到我需要的修订,但不知道如何将文件恢复到以前的状态。

提问于
用户回答回答于

假设想要的提交的哈希是c5f567:

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

GIT结帐主页提供更多信息。

如果想恢复到所做的更改1前犯c5f567,将提交哈希作为c5f567~1:

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

顺便提一句,我一直对这个命令感到不舒服,因为它既用于普通的事情(在分支之间进行更改),也用于异常的破坏性事情(丢弃工作目录中的更改)。

用户回答回答于

可以使用diff命令快速查看对文件所做的更改:

git diff <commit hash> <filename>

然后,若要将特定文件还原为提交,请使用Reset命令:

git reset <commit hash> <filename>

可能需要使用--hard选项,如果有本地修改。

管理路标点的一个很好的工作流程是使用标记来干净地标记时间线中的点。我不太明白你的最后一句话,但你可能想要的是从以前的时间点分开一个分支。为此,请使用方便的签出命令:

git checkout <commit hash>
git checkout -b <new branch name>

然后,当准备合并这些更改时,可以根据主线重新设置这些更改:

git checkout <my branch>
git rebase master
git checkout master
git merge <my branch>

扫码关注云+社区