首页 > 解决方案 > git stash apply 仅恢复未暂存的文件

问题描述

我在分支 A 上更改了大约 24 个文件。这些都没有提交。其中一些有更改的文件(例如 18 个)未暂存。其他6个文件正在上演。由于其他一些工作,我不得不结帐到其他分支 B。我在分支 A 上隐藏了这些更改,签出到分支 B,完成了我的工作,然后又返回到了分支 A。我现在做了 git stash apply。我只能看到未暂存的更改已恢复,但没有任何已更改和暂存的文件更改的迹象。

谁能帮助我恢复这些分阶段但未提交的更改?

标签: gitgithubgit-stash

解决方案


你可以 :

  • 放弃您当前的更改(例如 : git checkout .),
  • git stash apply --index

当您创建存储(使用git stash)时,git 存储您的 repo 的两个快照:当前索引(当前暂存文件的状态)和当前工作树(磁盘上文件的状态)。

当你运行时git stash apply,它只恢复你的工作树的状态;当您运行时git stash apply --index,它会恢复索引(就像您隐藏更改时一样)和工作树。

在您在问题中描述的情况下:您从分支中隐藏A,并且在运行之前返回到该状态git stash apply。因此,您可以 100% 保证在应用存储时不会发生冲突。

--index选项的小改动如下:如果在运行时发生冲突git stash apply --index,由于 git 使用索引来存储(并让您解决)冲突,您将不会真正知道冲突是否来自“索引”部分或“工作树”部分。再说一遍:这不适用于您在问题中描述的情况。


推荐阅读