44

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

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

4

3 回答 3

39

我们也面临同样的问题。因此,以下是我们如何恢复丢失的更改:

  1. 回到分支 B。

    git结帐B

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

    git reflog --all

    输出:

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

  3. 现在,使用切换到分支 Agit checkout A

  4. 最后,恢复丢失的更改。

    git stash apply f332d5c

于 2014-03-16T16:38:14.157 回答
36

Stashes 应该可以通过以下方式查看

git stash list

或者

gitk --all

此外,git stash不会存储未跟踪的文件。如果您这样做并随后执行git checkout --force了另一个分支以用另一个分支中的跟踪文件覆盖未跟踪的文件,那么您已经丢失了该内容。推荐的存储方式是

git stash -u

这将防止这种类型的损失。

于 2012-08-27T20:22:11.453 回答
1

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

这是发生在我身上的事情:我把我的东西藏起来了,从“开发”切换到“主”以快速进行修补程序。当我将修补程序推送到 master 时,我没有注意到我还将用于 dev 的新文件添加到 master 分支——我也认为 stash 包含这些文件。

于 2015-12-09T20:53:40.350 回答