恢复在本地分支中删除的文件夹
Restore a folder that's deleted in the local branch
我正在尝试恢复我在本地分支中删除的文件夹,但我无法执行此操作。我从 main 创建了一个新分支并删除了其中一个文件夹,同时我在该分支上工作并稍后进行了 10 次提交。
现在,我想在工作目录中包含已删除的文件夹以及 git 索引。
我试过了-
git checkout HEAD~10 -- ./gt/foo/
指的是 但我不断得到 -
error: pathspec './gt/foo/' did not match any file(s) known to git
我也试过了-
git restore -s main -SW -- gt/foo
从主工作分支中提取文件夹,但出现相同的错误。
如何恢复此文件夹?
首先,使用git log
获取修改文件夹的所有提交的列表。最近的一个将是它被删除的那个。这是一个示例 repo,我在其中创建然后删除了一个名为 hello/world
:
的文件夹
$ git log -p -- hello/world
然后,我们可以使用 ~1
:
在删除之前提交
git restore --source=27f1f1adf~1 -- hello/world
这会将文件夹恢复到当前目录而不暂存它,但您可以使用 git 添加暂存它:
确保 git 日志显示已删除文件夹的名称。如果 git log 没有找到它,你在错误的目录中搜索(你在项目的根目录下吗?你的路径正确吗?)
一旦您确认名称和路径正确无误,您实际上可以在 bash 或 zsh 中组合这两个步骤(替换为您的文件夹名称):
git restore --source="$(git log --pretty=format:"%H" -n 1 -- hello/world)"~1 -- hello/world
这将找到修改文件夹的最后一次提交(又名,它被删除的那个),然后它将恢复删除的文件夹:
我正在尝试恢复我在本地分支中删除的文件夹,但我无法执行此操作。我从 main 创建了一个新分支并删除了其中一个文件夹,同时我在该分支上工作并稍后进行了 10 次提交。
现在,我想在工作目录中包含已删除的文件夹以及 git 索引。
我试过了-
git checkout HEAD~10 -- ./gt/foo/
指的是
error: pathspec './gt/foo/' did not match any file(s) known to git
我也试过了-
git restore -s main -SW -- gt/foo
从主工作分支中提取文件夹,但出现相同的错误。
如何恢复此文件夹?
首先,使用git log
获取修改文件夹的所有提交的列表。最近的一个将是它被删除的那个。这是一个示例 repo,我在其中创建然后删除了一个名为 hello/world
:
$ git log -p -- hello/world
然后,我们可以使用 ~1
:
git restore --source=27f1f1adf~1 -- hello/world
这会将文件夹恢复到当前目录而不暂存它,但您可以使用 git 添加暂存它:
确保 git 日志显示已删除文件夹的名称。如果 git log 没有找到它,你在错误的目录中搜索(你在项目的根目录下吗?你的路径正确吗?)
一旦您确认名称和路径正确无误,您实际上可以在 bash 或 zsh 中组合这两个步骤(替换为您的文件夹名称):
git restore --source="$(git log --pretty=format:"%H" -n 1 -- hello/world)"~1 -- hello/world
这将找到修改文件夹的最后一次提交(又名,它被删除的那个),然后它将恢复删除的文件夹: