git - git stash apply 仅恢复未暂存的文件
问题描述
我在分支 A 上更改了大约 24 个文件。这些都没有提交。其中一些有更改的文件(例如 18 个)未暂存。其他6个文件正在上演。由于其他一些工作,我不得不结帐到其他分支 B。我在分支 A 上隐藏了这些更改,签出到分支 B,完成了我的工作,然后又返回到了分支 A。我现在做了 git stash apply。我只能看到未暂存的更改已恢复,但没有任何已更改和暂存的文件更改的迹象。
谁能帮助我恢复这些分阶段但未提交的更改?
解决方案
你可以 :
- 放弃您当前的更改(例如 :
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 使用索引来存储(并让您解决)冲突,您将不会真正知道冲突是否来自“索引”部分或“工作树”部分。再说一遍:这不适用于您在问题中描述的情况。
推荐阅读
- php - Mysql + PHP插入并从触发器获取最后一个插入ID
- javascript - 在每个函数执行之前和之后调用特定函数
- python - Pip 找不到元数据文件 - EnvironmentError
- angular - 使用角度/弹簧上传文件时出现MultipartException
- java - JavaFX eclipse 配置 - openJDK 10
- javascript - 未捕获的类型错误:无法在 Vg 处读取未定义 react-dom.production.min.js:134 的属性“当前”
- docker - docker 容器中的 tcp_keepalive_time
- python - Python 不断在文件中显示 cp1250 字符编码
- docker - 从 Docker gitlab CI 在 Verdaccio 上发布 npm 模块
- java - 是否可以通过 java 从桌面 Outlook 应用程序中获取邮件?