如何从git仓库的历史记录中恢复整个目录?
我想从我的git仓库的历史记录中恢复整个目录(递归)。
只有1个分支(主)。
我知道包含错误的提交。
我可以使用父提交的sha1哈希来恢复目录的状态,因为它包含错误之前的状态?
我想过这样的事情:
git checkout 348ce0aa02d3738e55ac9085080028b548e3d8d3 path/to/the/folder/
但它不起作用。
尝试在修订和路径之间添加' - ':
git checkout 348ce0aa02d3738e55ac9085080028b548e3d8d3 -- path/to/the/folder/
有两种简单的方法可以做到这一点:
如果包含错误的提交仅包含错误,请使用git revert
来反转它的效果。
如果不是,简单的道路是这样的:
git checkout 348…
cp -a path/to/the/folder ../tmp-restore-folder
git checkout HEAD # or whatever
rm -rf path/to/the/folder
mv ../tmp-restore-folder path/to/the/folder
git add path/to/the/folder
git commit -m "revert …"
如果你只是简单地使用git checkout <SHA-ID>
那么它会暂时将你移动到sha-commit。
每个提交对象都保存着当时磁盘的整个结构,所以如果你有文件并需要复制它们,你可以这样做。 但是,警告你不会在任何分支中,所以你必须在将文件复制到你的工作树并提交之前移回到主服务器。
链接地址: http://www.djcxy.com/p/18947.html上一篇: How to restore a whole directory from history of git repository?