如何查看存储中的更改将对当前工作树进行更改?我想知道在应用它们之前会做出哪些改变!
查看最新的藏匿处:
git stash show -p
看到任意藏匿:
git stash show -p stash@{1}
来自git stash
联机帮助页:
默认情况下,该命令显示diffstat,但它将接受git diff已知的任何格式(例如,git stash show -p stash @ {1}以查看补丁形式的第二个最近的存储)。
FWIW这可能对所有其他答案都有点多余,并且非常类似于接受的答案;但也许它会帮助别人。
git stash show --help
将为您提供所需的一切;包括藏匿显示信息。
显示[<stash>]
将存储中记录的更改显示为存储状态与其原始父项之间的差异。如果没有给出,则显示最新的一个。默认情况下,该命令显示diffstat,但它将接受git diff已知的任何格式(例如,git stash show -p stash @ {1}以查看补丁形式的第二个最近的存储)。您可以使用stash.showStat和/或stash.showPatch配置变量来更改默认行为。
没有移动任何东西的一种方法是利用qazxsw poi可以读取git diff(基本上统一差异)的事实
patch
这将向您显示通常会执行哪些修补程序的分步预览。这样做的另一个好处是补丁不会阻止自己将补丁写入工作树,如果由于某种原因你真的需要git来关闭提交 - 修改之前,继续并删除--dry-运行并遵循详细说明。
她藏匿的名单
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
只显示你将应用的内容)
您可以使用:
show
要么
git diff stash@{0}
另一个有趣的事情是:
git diff stash@{0} <branch name>
这应用存储而不从列表中删除它,你可以git stash apply
git stash apply stash@{10}
删除这些更改或如果你很高兴git checkout .
从列表中删除存储。
从这里我从不建议使用git stash drop stash@{10}
并使用git stash pop
和git stash apply
的组合如果您在错误的分支中应用存储...有时很难恢复您的代码。
要查看最近的藏匿信息:
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}^!
这将stash与它所基于的提交进行比较。
如果您的工作树是脏的,您可以通过首先提交脏工作树,然后将其与存储进行比较,将其与存储进行比较。之后,您可以使用脏工作树撤消提交(因为您可能不希望在提交日志中具有该脏提交)。
您还可以使用以下方法来比较两个stashes(在这种情况下,您只需先弹出其中一个stashes)。
git add .
git commit -m "Dirty commit"
git diff HEAD stash@{0}
git reset --soft HEAD~1
git reset .
现在你已经用你的藏匿处肮脏的工作树,并回到你最初的位置。
@Magne的answer是唯一一个(非常晚)的日期,它回答了对这个问题的最灵活/最有用的解释,但它比必要的复杂得多。而不是提交和重置,只需存储您的工作副本,比较,然后取消暂停。
git stash save "temp"
git diff stash@{0} stash@{1}
git stash pop
通过暂时使您的工作文件夹更改成为存储堆栈的顶部(存储@ {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)