使用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]
上一篇: Reset or revert a specific file to a specific revision using Git?
下一篇: Edit a commit message in SourceTree Windows (already pushed to remote)