查看最新的存储:
git stash show -p
查看任意存储:
git stash show -p stash@{1}
从git stash
联机帮助页:
默认情况下,该命令显示 diffstat,但是它将接受 git diff 已知的任何格式(例如,git stash show -p stash @ {1} 以补丁程序形式查看最近的第二个 stash)。
要查看最新存储:
git stash show -p
要查看任意存储:
git stash show -p stash@{1}
另外,我使用 git diff 比较存储与任何分支。
您可以使用:
git diff stash@{0} master
查看与分支主服务器相比的所有更改。
或者您可以使用:
git diff --name-only stash@{0} master
为了轻松查找仅更改的文件名。
如果您隐匿的更改所基于的分支同时已更改,则此命令可能有用:
git diff stash@{0}^!
这会将存储与它基于的提交进行比较。
如果您的工作树很脏 ,则可以通过先提交脏工作树,然后将其与存储进行比较,将其与存储进行比较。之后,您可以使用脏工作树撤消提交(因为您可能不想在提交日志中拥有该脏提交)。
您还可以使用以下方法将两个存储区相互比较(在这种情况下,您首先只是弹出一个存储区)。
提交您的脏工作树:
git add .
git commit -m "Dirty commit"
与该提交区别存储:
git diff HEAD stash@{0}
然后,之后,您可以还原提交,并将其放回到工作目录中:
git reset --soft HEAD~1
git reset .
现在,您已经将肮脏的工作树与存储区进行了区分,然后又回到了最初的状态。
@Magne 的答案是唯一(最晚)回答最灵活 / 最有用的问题解释的日期,但是它比必要的要复杂得多。无需提交和重置,只需存储工作副本,进行比较然后取消存储即可。
git stash save "temp"
git diff stash@{0} stash@{1}
git stash pop
通过暂时使工作文件夹更改成为存储堆栈的顶部(stash @ {0}),将原始顶部向下移动一个(存储 @ {1}),可以显示存储堆栈顶部和工作文件夹之间的差异),然后在 “新设置” 位置使用原始顶部进行比较,以便您看到将其应用到当前工作之上而产生的更改。
“但是如果我目前没有任何工作怎么办?”然后,您处于正常的无聊情况。只需使用 @Amber 的答案
git stash show
或 @czerasz 的答案
git diff stash@{0}
或承认无论如何都可以轻松进行存储和取消存储,只需取消存储更改并进行检查即可。如果您暂时不希望将它们扔掉(当前索引 / 工作文件夹会更改)。完全是
git stash apply
git diff
git reset
git checkout
这对我适用于 git 版本 1.8.5.2:
git diff stash HEAD
如果您有差异工具(例如无法比较)
git difftool stash HEAD
以防万一,要比较工作树和存储中的文件,请使用以下命令
git diff stash@{0} -- fileName (with path)
一种不做任何事情的方法是利用patch
可以读取 git diff 的事实(基本上是统一的 diff)。
git stash show -p | patch -p1 --verbose --dry-run
这将逐步向您展示修补程序通常会执行的操作。这样做的另一个好处是,修补程序也不会阻止自身将修补程序写入工作树,如果由于某种原因您只需要 git 来关闭修改前的提交,请继续删除 --dry - 运行并按照详细说明进行操作。