如何从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?

    下一篇: Restore a deleted folder in a Git repo