git stash pop含未跟踪文件的存储遇冲突时,未跟踪文件未恢复是否正常?
问题结论
这是Git的预期行为,不属于Bug。
git stash pop的执行逻辑是按顺序恢复存储的改动,一旦遇到文件冲突就会立刻中断流程,还未完成恢复的内容(本次场景中就是你通过-u参数存储的未跟踪文件test2.txt)不会被还原到工作目录,同时触发冲突的stash也不会被自动删除,可通过git stash list命令看到该stash仍然存在于存储列表中。
解决步骤
- 第一步:处理已出现的test.txt文件冲突
打开test.txt文件,手动删除Git自动生成的冲突分隔标记,调整为你最终需要的内容后,执行git add test.txt标记该文件冲突已解决。 - 第二步:恢复存储的未跟踪文件
直接执行git stash apply命令,即可将存储中未恢复的test2.txt文件还原到工作目录。如果确认所有内容都恢复无误,可执行git stash drop删除该条stash记录。
补充建议
后续操作时优先使用git stash apply代替git stash pop,等确认所有存储内容都正确恢复、没有异常后再手动执行git stash drop删除对应stash,避免冲突场景下出现内容恢复不全的问题。
内容的提问来源于stack exchange,提问作者Anastasios Andronidis
相关产品推荐
相关产品推荐

