在做一个复杂的合并之前,我隐藏了一些本地更改,做了合并,然后愚蠢地忘记了在运行git stash pop之前提交。pop产生了一些问题(大型代码库中的糟糕方法调用),这些问题很难追踪。我运行了git隐藏程序,所以我至少知道哪些文件被更改了。如果不出意外的话,我想这是一个教训,让我们付出更多。
我的问题:是否有可能在不撤销合并的情况下撤销隐藏弹出?
在做一个复杂的合并之前,我隐藏了一些本地更改,做了合并,然后愚蠢地忘记了在运行git stash pop之前提交。pop产生了一些问题(大型代码库中的糟糕方法调用),这些问题很难追踪。我运行了git隐藏程序,所以我至少知道哪些文件被更改了。如果不出意外的话,我想这是一个教训,让我们付出更多。
我的问题:是否有可能在不撤销合并的情况下撤销隐藏弹出?
尝试使用如何恢复一个丢失的藏匿在Git?去找你偷的东西。我认为对于一个stash总是有两次提交,因为它保留了索引和工作副本(因此通常索引提交将是空的)。然后git显示它们以查看差异,并使用patch -R取消应用它们。
从少管所偷来的,救命
Recovering stashes that were cleared/dropped erroneously
If you mistakenly drop or clear stashes, they cannot be recovered through the normal safety mechanisms. However, you can try the
following incantation to get a list of stashes that are still in your repository, but not reachable any more:
git fsck --unreachable |
grep commit | cut -d\ -f3 |
xargs git log --merges --no-walk --grep=WIP
在同样的情况下,这比公认的答案更能帮助我。
如果你的合并不是太复杂,另一个选择是:
使用“git stash”将所有更改(包括合并更改)移回存储 再次运行合并并提交您的更改(不包含来自已删除存储的更改) 运行一个“git stash pop”,它应该忽略你之前合并的所有更改,因为现在文件是相同的。
在此之后,你只剩下了你过早放弃的隐藏的变化。