我有很多分阶段和未分阶段的更改,我想快速切换到另一个分支,然后再切换回来。
所以我使用以下方法进行了更改:
$ git stash push -a
(事后看来我可能可以使用--include-untracked
代替--all
)
然后,当我去弹出存储时,我收到了很多错误,大致如下:
$ git stash pop
foo.txt already exists, no checkout
bar.txt already exists, no checkout
...
Could not restore untracked files from stash entry
似乎没有从存储中恢复任何更改。
我也尝试过$ git stash branch temp
但这显示了相同的错误。
我确实找到了解决这个问题的方法,那就是使用:
$ git stash show -p | git apply
灾难暂时避免了,但这引发了一些问题。
为什么首先会发生此错误以及下次如何避免它?
我设法重现了您的问题。似乎如果您隐藏未跟踪的文件,然后创建这些文件(在您的示例中,foo.txt
and bar.txt
),那么您对未跟踪的文件进行了本地更改,这些更改在您应用时将被覆盖git stash pop
.
要解决此问题,您可以使用以下命令。这会覆盖任何未保存的本地更改所以要小心。
git checkout stash -- .
这是我在上一个命令中找到的一些进一步信息 https://stackoverflow.com/questions/16606203/force-git-stash-to-overwrite-added-files.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)