如何从已删除的 git 工作树中恢复分阶段更改?
How can I recover a staged changes from a deleted git worktree?
我不小心删除了一个工作树,其中包含暂存但未提交的更改!
但是 git worktree list
仍然显示工作树(即它没有被修剪)
说,
/home/me/worktreeexample 0d4f25f [fix/something]
/home/me/ 0fd8c7e [master]
但是因为我只是 运行 rm -rf worktreeexample/
什么都没有
$ ls 工作树示例/
在 worktreeexample
中创建一个新文件,告诉 git
查找位置。格式基于.git/worktrees
的内容。
因此,对于上面的示例,这将起作用:
echo "gitdir: /home/me/.git/worktrees/worktreeexample" > worktreeexample/.git
然后 运行 git status
in worktreeexample/
将显示您所有已删除的文件,并且希望您还可以提交正在进行的工作。 运行
cd worktreeexample
git checkout -- .
这将只留下分阶段的更改。
注意 如果您有 未暂存的 更改并且您破坏了工作目录,那您就不走运了。
我不小心删除了一个工作树,其中包含暂存但未提交的更改!
但是 git worktree list
仍然显示工作树(即它没有被修剪)
说,
/home/me/worktreeexample 0d4f25f [fix/something]
/home/me/ 0fd8c7e [master]
但是因为我只是 运行 rm -rf worktreeexample/
什么都没有
$ ls 工作树示例/
在 worktreeexample
中创建一个新文件,告诉 git
查找位置。格式基于.git/worktrees
的内容。
因此,对于上面的示例,这将起作用:
echo "gitdir: /home/me/.git/worktrees/worktreeexample" > worktreeexample/.git
然后 运行 git status
in worktreeexample/
将显示您所有已删除的文件,并且希望您还可以提交正在进行的工作。 运行
cd worktreeexample
git checkout -- .
这将只留下分阶段的更改。
注意 如果您有 未暂存的 更改并且您破坏了工作目录,那您就不走运了。