我不小心创建了一个带有--all选项的 git stash ,根据文档,
如果
--all改为使用该选项,则除了未跟踪的文件之外,还会隐藏和清理被忽略的文件。
所以现在恢复我的更改git stash pop失败:
some/ignored/file already exists, no checkout
Could not restore untracked files from stash
Run Code Online (Sandbox Code Playgroud)
(我实际上应该做的是使用--include-untracked)
git stash show -p仍然列出我的更改,没有任何忽略的文件。如何在apply没有 git 尝试恢复被忽略文件的情况下存储我的文件?
编辑:我刚刚创建了一个测试存储库并做了一个git stash --all. 被忽略的文件被隐藏并从文件系统中删除。我的问题是,在我上面的例子中,它们被藏起来了,但没有从文件系统中删除,所以这似乎是问题的原因。
使用 log 查找存储的提交哈希
$ git log --graph --all --decorate --oneline
Run Code Online (Sandbox Code Playgroud)
一切都很重要,因为它还显示了隐藏信息
它应该与此类似
*-. cd5e9ae (refs/stash) WIP on master: cd48088 Fixed GET chats output
|\ \
| | * e48d0d7 untracked files on master: cd48088 Fixed GET chats output
| * 1a3bf97 index on master: cd48088 Fixed GET chats output
|/
* cd48088 (HEAD, origin/master, master) Fixed GET chats output
Run Code Online (Sandbox Code Playgroud)
现在,您要检查存储的顶部(这里是 cd5e9ae)
$ git checkout cd5e9ae
Run Code Online (Sandbox Code Playgroud)
您将处于分离的 HEAD 状态,
将其重置一步,保留更改
$ git reset HEAD~1
Run Code Online (Sandbox Code Playgroud)
现在像你想的那样把它藏起来
$ git stash --include-untracked
Run Code Online (Sandbox Code Playgroud)
现在您可以回到 master 或您工作的任何地方并应用新的正确存储
$ git checkout master
$ git stash pop
Run Code Online (Sandbox Code Playgroud)
受到这篇博文的启发
我刚刚测试了它,它在我的项目中与我忽略的文件一起工作,它也适用于你。