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


当前回答

她列出了藏匿物品的清单

git stash list 
stash@{0}: WIP on feature/blabla: 830335224fa Name Commit
stash@{1}: WIP on feature/blabla2: 830335224fa Name Commit 2

因此,获取存储编号并执行以下操作:

您可以执行以下操作:

 git stash show -p stash@{1}

但如果你想要一个diff(这与显示隐藏不同,这就是我写这个答案的原因。diff考虑分支中的当前代码,show只是显示你将应用的内容)

您可以使用:

git diff stash@{0}

or

git diff stash@{0} <branch name>

另一件有趣的事情是:

git stash apply
git stash apply stash@{10}

这将在不从列表中删除的情况下应用隐藏,您可以进行git结帐。删除这些更改,或者如果你很高兴git stash drop stash@{10},从列表中删除一个stash。

从这里开始,我从不建议使用git stash pop,并使用gitstash apply和gitstash drop的组合。。。有时候很难恢复代码。

其他回答

以防万一,要比较工作树和存储库中的文件,请使用以下命令

git diff stash@{0} -- fileName (with path)

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

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

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

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

结合我在这篇文章和这篇文章中学到的知识,当我想看看“藏东西里面有什么”时,我首先运行:

git stash show stash@{0}

这将显示修改的文件。然后,为了在difftool中获得良好的视觉差异,我需要:

git difftool --dir-diff stash@{0} stash@{0}^

这将同时显示给定存储与其父存储的所有差异。

您可以在~/.gitconfig中配置diff工具,例如使用Meld:

...
[diff]
    tool = meld

要查看最新的存储:

git stash show -p

要查看任意存储:

git stash show -p stash@{1}

此外,我使用gitdiff将存储与任何分支进行比较。

您可以使用:

git diff stash@{0} master

查看与分支主机相比的所有更改。或者您可以使用:

git diff --name-only stash@{0} master

仅查找更改的文件名。

查看最近的存储:

git stash show -p

查看任意存储:

git stash show -p stash@{1}

从git存储手册页:

默认情况下,该命令显示diffstat,但它将接受任何gitdiff已知的格式(例如,要查看的git stash show-p stash@{1}补丁形式的第二个最近的隐藏)。