丢失了git stash的变化

时间:2012-08-27 17:57:57

标签: git git-stash

所以这是发生的事情: 我在一个分支'A'上并在那个分支上做了一个Git藏匿。然后我切换到另一个分支'B'。我导航回分支'A',但没有做Git stash pop。我切换到主分支然后回到分支'A'。我现在试图去一个git stash pop但是似乎无法恢复我的更改..我需要恢复该代码但是每当我执行git stash pop时,我的文件更改都没有列出。我没有提交任何代码。

有没有办法恢复我所做的更改?非常感谢这方面的任何帮助。

3 个答案:

答案 0 :(得分:22)

我们也遇到了同样的问题。所以,这是我们如何恢复丢失的变化:

  1. 回到B分行。

      

    git checkout B

  2. 使用git reflog选项管理reflog信息。

      

    git reflog --all

    <强>输出:

      

    f332d5c refs / stash @ {0}:B上的WIP:aa1d0c1 xyz提交消息

  3. 现在,使用git checkout A

  4. 切换到分支A.
  5. 最后,恢复丢失的更改。

      

    git stash应用 f332d5c

答案 1 :(得分:12)

可以通过

查看藏匿处
git stash list

gitk --all

此外,git stash不会存储未跟踪的文件。如果您执行此操作并随后执行了另一个分支的git checkout --force来覆盖未跟踪的文件,而另一个分支中的已跟踪文件,则您已丢失该内容。建议的藏匿方式是

git stash -u

这可以防止此类损失。

答案 2 :(得分:1)

类似的事发生在我身上。简而言之,请检查以确保您没有意外地将新文件推送到其他分支。

发生在我身上的事情:我把我的东西藏起来,从“开发”转到了#dev;&#39;到#&#39;掌握&#39;快速做一个修补程序。当我将我的修补程序推送到掌握时,我没有注意到我还将我的新文件添加到主分支的开发中 - 我也假设存储包含这些文件。