如何从已删除的 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 -- .

这将只留下分阶段的更改。

注意 如果您有 未暂存的 更改并且您破坏了工作目录,那您就不走运了。