使用Git将特定文件重置或恢复到特定修订版本?

我已经对作为一组文件的一部分提交了几次的文件进行了一些更改,但现在想要将其更改重置/恢复到以前的版本。

我做了一个git log和一个git diff来找到我需要的修订版本,但是不知道如何让文件恢复到以前的状态。


假设你想要的提交的散列是c5f567

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

git checkout手册页提供了更多信息。

如果你想恢复到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>

如果最方便的话,你可以使用任何对git commit的引用,包括SHA-1。 关键是该命令如下所示:

git checkout [commit-ref] -- [filename]

链接地址: http://www.djcxy.com/p/145.html

上一篇: Reset or revert a specific file to a specific revision using Git?

下一篇: Edit a commit message in SourceTree Windows (already pushed to remote)