我怎样能够查看取消暂存所做的更改会对当前工作树产生什么影响?在应用更改之前,我想知道将会进行什么更改!
不需要移动任何东西,有一种方法可以利用patch
能够读取git diff(基本上是统一的差异)的事实。
git stash show -p | patch -p1 --verbose --dry-run
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}
git diff stash@{0} <branch name>
另一个有趣的事情是:
git stash apply
git stash apply stash@{10}
这将应用stash而不从列表中删除它,您可以使用git checkout .
来删除这些更改,或者如果您满意,可以使用git stash drop stash@{10}
从列表中删除stash。
从这里开始,我从不建议使用git stash pop
,而是使用git stash apply
和git stash drop
的组合。如果您在错误的分支中应用了stash...有时恢复代码很困难。
git diff stash@{0}
或者简单地:
git diff stash
但这样显示的不对,与我预期相反:新增的行(通常为绿色)被显示为删除(通常为红色),反之亦然。
将差异反转给了我所需的结果:
git diff stash -R
git diff
所得到的结果是相同的。FWIW 这可能与所有其他答案有些冗余,非常类似于被接受的答案,这是正确的;但也许它会帮助某人。
git stash show --help
将为您提供所有需要的内容,包括stash show信息。
show [<stash>]
显示作为存储状态和其原始父级之间差异的存储记录中记录的更改。 当未给出 时,显示最新的一个。默认情况下,该命令显示diffstat,但它将接受git diff所知的任何格式(例如,git stash show -p stash@ {1}以补丁形式查看第二个最近的stash)。 您可以使用stash.showStat和/或stash.showPatch配置变量来更改默认行为。
tig
的存储视图感兴趣。 https://jonas.github.io/tig/doc/manual.html - undefined