我想从我的git存储库的历史记录中(递归)还原整个目录。
只有1个分支(主)。
我知道包含错误的提交。
我是否可以使用父提交的sha1哈希值还原包含错误之前的目录状态?
我想到了这样的事情:
git checkout 348ce0aa02d3738e55ac9085080028b548e3d8d3 path/to/the/folder/
但它没有用。
我想从我的git存储库的历史记录中(递归)还原整个目录。
只有1个分支(主)。
我知道包含错误的提交。
我是否可以使用父提交的sha1哈希值还原包含错误之前的目录状态?
我想到了这样的事情:
git checkout 348ce0aa02d3738e55ac9085080028b548e3d8d3 path/to/the/folder/
但它没有用。
Answers:
尝试在修订和路径之间添加“-”:
git checkout 348ce0aa02d3738e55ac9085080028b548e3d8d3 -- path/to/the/folder/
如果要从上一次提交恢复目录,则可以用HEAD〜1替换提交哈希,例如:
git checkout HEAD~1 -- path/to/the/folder/
rm -Rf path/to/the/folder,然后git checkout 348ce0aa02d3738e55ac9085080028b548e3d8d3 -- path/to/the/folder/-结果:该路径有完全相同的文件,在该承诺,不,这已经在这之后创建的差异并没有多余的文件提交。这就是我想要的。
--办?
有两种简单的方法可以做到这一点:
如果包含错误的提交仅包含错误,请用于git revert反转其影响。
如果没有,简单的方法是这样的:
git checkout 348…cp -a path/to/the/folder ../tmp-restore-foldergit checkout HEAD # or whateverrm -rf path/to/the/foldermv ../tmp-restore-folder path/to/the/foldergit add path/to/the/foldergit commit -m "revert …"
git checkout 348ce0aa02d3738e55ac9085080028b548e3d8d3 -- path/to/the/folder/