如何查看取消隐藏将对当前工作树所做的更改?我想知道在应用它们之前将进行哪些更改!


当前回答

根据您想要将存储与(本地工作树/父提交/头提交)进行比较的内容,实际上有几个命令可用,其中好的旧git diff和更具体的git存储显示:

Compare stash with ↓ git diff git stash show
Local working tree git diff stash@{0} git stash show -l
Parent commit git diff stash@{0}^ stash@{0} git stash show -p
HEAD commit git diff stash@{0} HEAD /

虽然git stash show乍一看更友好,但git diff实际上更强大,因为它允许为更集中的diff指定文件名。我个人在zsh-git插件中为所有这些命令设置了别名。

其他回答

如果隐藏的更改所基于的分支在此期间发生了更改,则此命令可能有用:

git diff stash@{0}^!

这会将隐藏与它所基于的提交进行比较。

一种不移动任何东西的方法是利用补丁可以读取gitdiff(基本上是统一的diff)这一事实

git stash show -p | patch -p1 --verbose --dry-run

这将向您展示补丁通常会做什么的一步一步的预览。这样做的额外好处是,补丁也不会阻止自己将补丁写入工作树,如果出于某种原因,您确实需要git在修改之前停止提交,请继续删除,然后按照详细的说明运行。

我相信gitdiff<currentbranchname>。。stash@{0}是比较本地工作树和最新stash之间变化的最直观方法。根据需要,用适用的存储编号替换存储@{0}。

请注意,git diff stash@{0}可能会产生误导性结果。如果您的存储和当前分支的两个历史记录发生了分歧,那么差异看起来就像您在存储中添加了所有新的内容,并删除了当前分支特有的所有内容。

基于git手册的答案

此外,请注意双点。。和三点。。。指定不同的提交比较,我指的是这个答案的双点。有关详细信息,请参阅git手册

如果你的工作树是脏的,你可以通过首先提交脏的工作树,然后将其与隐藏进行比较,将其与存储进行比较。然后,您可以使用脏的工作树撤消提交(因为您可能不希望在提交日志中有脏的提交)。

您还可以使用以下方法将两个储藏物相互比较(在这种情况下,您只需首先弹出其中一个储藏物)。

提交您的脏工作树:git添加。gitcommit-m“脏提交”将隐藏与提交区分开来:git diff HEAD存储@{0}然后,您可以恢复提交,并将其放回工作目录:git reset—软HEAD~1git重置。

现在,你已经用你的储藏物改变了肮脏的工作树,回到了最初的位置。

根据您想要将存储与(本地工作树/父提交/头提交)进行比较的内容,实际上有几个命令可用,其中好的旧git diff和更具体的git存储显示:

Compare stash with ↓ git diff git stash show
Local working tree git diff stash@{0} git stash show -l
Parent commit git diff stash@{0}^ stash@{0} git stash show -p
HEAD commit git diff stash@{0} HEAD /

虽然git stash show乍一看更友好,但git diff实际上更强大,因为它允许为更集中的diff指定文件名。我个人在zsh-git插件中为所有这些命令设置了别名。