我把一些作品放错地方了,但我知道它在我的git藏书堆的某个地方 我在修正一个特征时,出现了另一个更重要的问题。我使用了git-stash,而不是像通常那样创建新分支、提交并移回主分支。我忘了我从未完成修复,只是把它放在我的储藏室里。我经常使用git stash在使用不同项目配置设置的分支之间移动更改,以针对多个构建环境进行测试,所以我总是隐藏东西。过了一段时间,我意识到在主分支中找不到修复程序,我记得我不久前把它藏了起来。我知道我仍然必须拥有它,因为我总是使用git stash apply而不是git stash pop,但我不知道这些更改在堆栈中的位置有多远。但是,我知道,如果有帮助的话,此修复程序的所有更改都是在单个源文件中进行的

我把一些作品放错地方了,但我知道它在我的git藏书堆的某个地方 我在修正一个特征时,出现了另一个更重要的问题。我使用了git-stash,而不是像通常那样创建新分支、提交并移回主分支。我忘了我从未完成修复,只是把它放在我的储藏室里。我经常使用git stash在使用不同项目配置设置的分支之间移动更改,以针对多个构建环境进行测试,所以我总是隐藏东西。过了一段时间,我意识到在主分支中找不到修复程序,我记得我不久前把它藏了起来。我知道我仍然必须拥有它,因为我总是使用git stash apply而不是git stash pop,但我不知道这些更改在堆栈中的位置有多远。但是,我知道,如果有帮助的话,此修复程序的所有更改都是在单个源文件中进行的,git,git-stash,Git,Git Stash,有没有“最好”的方法来找到这个丢失的补丁?我可以运行git stash pop,看看它是否恢复了修复,git reset--hard如果没有,如果有合并冲突,我可以运行git stash drop,然后重复,直到找到它,但我希望它的破坏性稍微小一些。对于Git,似乎总有至少10种不同的方法来完成您在管理代码方面可能想做的任何事情,所以在开始拆除我的隐藏堆栈之前,我想征求第二种意见。第一次使用 git stash list 获取您所隐藏的所有项目的概览(并获取它们的哈希值) 要查看它们引入的更改

有没有“最好”的方法来找到这个丢失的补丁?我可以运行
git stash pop
,看看它是否恢复了修复,
git reset--hard
如果没有,如果有合并冲突,我可以运行
git stash drop
,然后重复,直到找到它,但我希望它的破坏性稍微小一些。对于Git,似乎总有至少10种不同的方法来完成您在管理代码方面可能想做的任何事情,所以在开始拆除我的隐藏堆栈之前,我想征求第二种意见。

第一次使用

git stash list
获取您所隐藏的所有项目的概览(并获取它们的哈希值)

要查看它们引入的更改,请使用

git stash show <stash_hash>
git藏品展
要查看这些更改的完整差异,请使用

git stash show -p <stash_hash>
git藏匿秀-p
一旦知道要应用的项目,请使用:

git stash apply <stash_hash>
git隐藏应用

这显然比我的想法要好,但是有没有一种方法可以不首先应用它就查看隐藏的差异呢?正如我所说:
git stash show
。首先获取哈希槽
git存储列表
。然后在
git stash show
中使用它。在这种情况下,这个答案就是您想要做的,但是还有另一种方法可以在git中找到“丢失的”东西-
git reflog
。我不会在这里详细介绍所有的细节,网上有很多教程,但是你可以使用
git reflog
来恢复隐藏,即使在删除它之后(或者恢复其他丢失的提交,例如在运行
git reset
并将分支移动到较早的提交之后)。使用
git stash show-p
来查看差异,您不需要使用提交散列作为
git stash show
的参数。您还可以使用
stash@{n}
,其中
n
是一个整数,正如它出现在
git stash列表的输出中一样
git stash
接受一个可选参数,为您的stash提供提交消息:
git stash save“message”
。如果你给每一个藏品一个像样的信息,以后会更容易找到它们。有关命名贮藏的更多乐趣,请参见。