所以这是发生的事情: 我在一个分支'A'上并在那个分支上做了一个Git藏匿。然后我切换到另一个分支'B'。我导航回分支'A',但没有做Git stash pop。我切换到主分支然后回到分支'A'。我现在试图去一个git stash pop但是似乎无法恢复我的更改..我需要恢复该代码但是每当我执行git stash pop时,我的文件更改都没有列出。我没有提交任何代码。
有没有办法恢复我所做的更改?非常感谢这方面的任何帮助。
答案 0 :(得分:22)
我们也遇到了同样的问题。所以,这是我们如何恢复丢失的变化:
回到B分行。
git checkout B
使用git reflog
选项管理reflog信息。
git reflog --all
<强>输出:强>
f332d5c refs / stash @ {0}:B上的WIP:aa1d0c1 xyz提交消息
现在,使用git checkout A
最后,恢复丢失的更改。
git stash应用 f332d5c
答案 1 :(得分:12)
可以通过
查看藏匿处git stash list
或
gitk --all
此外,git stash
不会存储未跟踪的文件。如果您执行此操作并随后执行了另一个分支的git checkout --force
来覆盖未跟踪的文件,而另一个分支中的已跟踪文件,则您已丢失该内容。建议的藏匿方式是
git stash -u
这可以防止此类损失。
答案 2 :(得分:1)
类似的事发生在我身上。简而言之,请检查以确保您没有意外地将新文件推送到其他分支。
发生在我身上的事情:我把我的东西藏起来,从“开发”转到了#dev;&#39;到#&#39;掌握&#39;快速做一个修补程序。当我将我的修补程序推送到掌握时,我没有注意到我还将我的新文件添加到主分支的开发中 - 我也假设存储包含这些文件。