丢失了git stash的变化

nid*_*ids 24 git git-stash

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

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

小智 26

我们也遇到了同样的问题.那么,这是我们如何恢复丢失的变化:

  1. 回到分支B.

    git checkout B

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

    git reflog --all

    输出:

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

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

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

    git stash应用f332d5c

  • 可以提交,但是却藏不住东西。恢复了我的工作“ git stash apply”。谢谢! (3认同)
  • 坦率地说,您与http://effectif.com/git/recovering-lost-git-commits一起保存了我最近的两周时间。谢谢! (3认同)

Ada*_*ruk 17

通过可以查看的藏匿处

git stash list
Run Code Online (Sandbox Code Playgroud)

要么

gitk --all
Run Code Online (Sandbox Code Playgroud)

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

git stash -u
Run Code Online (Sandbox Code Playgroud)

这将防止此类损失.

  • 在`git stash list`之后,您可以按索引号应用特定的存储.例如,`git stash apply 1`将应用以`stash @ {1}`开头的行 (2认同)
  • 分支“main”中的“git stash”,然后是“git stash Branch newbranch”,然后是“git checkout main”,导致我的存储消失了。结账时没有使用`--force`。也许这是一个 git 错误或限制? (2认同)