如@bentolo所述,您可以手动删除其抱怨的文件,切换分支,然后手动将其重新添加。但是我个人更喜欢保持“在git之内”。
最好的方法是将存储转换为分支。一旦它成为一个分支,您就可以使用您知道和喜欢的与分支相关的常规技术/工具在git中正常工作。即使您没有列出的错误,这实际上也是处理隐藏的有用的常规技术。它之所以有效,是因为隐藏实际上是在后台进行的提交(请参阅PS)。
将存储转换为分支
以下内容在创建存储时基于HEAD创建一个分支,然后应用该存储(不提交)。
git stash branch STASHBRANCH
使用“存储分支”
接下来的操作取决于存储区与目标分支(现在称为ORIGINALBRANCH)之间的关系。
选项1-正常重置存储分支(自存储以来的许多更改)
如果您在ORIGINALBRANCH中做了很多更改,那么您最好将STASHBRANCH像任何本地分支一样对待。在STASHBRANCH中提交更改,将其基于ORIGINALBRANCH,然后切换到ORIGINALBRANCH,然后对STASHBRANCH更改进行基础/合并。如果存在冲突,则可以正常处理它们(此方法的优点之一是可以看到并解决冲突)。
选项2-重置原始分支以匹配存储(自存储以来的有限更改)
如果您只是在保留某些已进行的变更的情况下进行藏匿,然后进行提交,那么您要做的就是获得藏匿时未转移的其他更改,则可以执行以下操作。它将切换回原始分支和索引,而无需更改工作副本。最终结果将是您在工作副本中的其他存储更改。
git symbolic-ref HEAD refs/heads/ORIGINALBRANCH
git reset
背景
垃圾是提交,就像分支/标签(不是补丁)
PS,很容易将存储视为一个补丁(就像将提交视为一个补丁一样),但是存储实际上是针对HEAD的提交。当您应用/弹出时,您所做的事情类似于将其挑选到当前分支中。请记住,分支和标签实际上只是对提交的引用,因此在许多方面,隐藏,分支和标签只是指向提交(及其历史)的不同方式。
即使没有更改工作目录,有时也需要
PPS,仅在与--patch和/或--include-untracked一起使用隐藏之后,您可能需要此技术。即使不更改工作目录,这些选项有时也可以创建存储,您不能仅仅将其应用回来。我必须承认不完全理解为什么。有关某些讨论,请参见http://git.661346.n2.nabble.com/stash-refuses-to-pop-td7453780.html。