我在我的私房钱里存了一小块。我已经使用git stash apply将它应用到我的工作副本。现在,我想通过反向应用补丁来撤销这些更改(有点像git revert会做的事情,但针对的是stash)。

有人知道怎么做吗?

澄清:在我的工作副本中有其他更改。我的具体情况很难描述,但您可以想象在存储库中有一些调试或实验代码。现在,它混合在我的工作副本与其他一些变化,我想看看效果与不从隐藏的变化。

目前看来stash还不支持这个功能,但是git的stash apply—reverse将是一个不错的功能。


当前回答

您可以应用两条命令

Git重置。//反转文件

then

Git结帐。//改变

其他回答

V1 git手册页有一个关于取消应用存储的参考。节选如下。

更新的V2 git手册页不包括任何关于取消应用stash的参考,但下面的内容仍然可以很好地工作

取消应用Stash 在某些用例场景中,您可能希望应用存储的更改,做一些工作,但随后取消应用最初来自存储的那些更改。Git没有提供这样的stash unapply命令,但是可以通过简单地检索与stash相关的补丁并反向应用它来达到这个效果:

$ git stash show -p stash@{0} | git apply -R

同样,如果你没有指定一个存储,Git假设是最近的存储:

$ git stash show -p | git apply -R

您可能想要创建一个别名,并有效地向Git添加一个stash-unapply命令。例如:

$ git config --global alias.stash-unapply '!git stash show -p | git apply -R'
$ git stash apply
$ #... work work work
$ git stash-unapply

这早就应该了,但如果我正确地解释这个问题,我已经找到了一个简单的解决方案,注意,这是我自己的术语解释:

Git stash [save]将保存当前的更改,并将当前分支设置为“清洁状态”

git的存储列表提供如下内容

Git应用stash@{0}将当前分支设置为之前的stash [save]

Git结帐。将当前分支设置为存储[保存]之后

保存在stash中的代码不会丢失,它可以通过git apply stash@{0}再次找到。

不管怎样,这对我很管用!

您可以应用两条命令

Git重置。//反转文件

then

Git结帐。//改变

你可以按照我分享的图像,以取消藏匿,如果你不小心点了藏匿。

如何反向应用收藏?

除了别人提到的,最简单的方法是先做

git reset HEAD

然后签出所有本地更改

git checkout .