如何查看取消隐藏将对当前工作树所做的更改?我想知道在应用它们之前将进行哪些更改!
当前回答
我相信gitdiff<currentbranchname>。。stash@{0}是比较本地工作树和最新stash之间变化的最直观方法。根据需要,用适用的存储编号替换存储@{0}。
请注意,git diff stash@{0}可能会产生误导性结果。如果您的存储和当前分支的两个历史记录发生了分歧,那么差异看起来就像您在存储中添加了所有新的内容,并删除了当前分支特有的所有内容。
基于git手册的答案
此外,请注意双点。。和三点。。。指定不同的提交比较,我指的是这个答案的双点。有关详细信息,请参阅git手册
其他回答
一种不移动任何东西的方法是利用补丁可以读取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 diff stash@{0}^!
这会将隐藏与它所基于的提交进行比较。
@Magne的回答是迄今为止(很晚)唯一一个对这个问题做出最灵活/最有用解释的答案,但它比必要的要复杂得多。而不是提交和重置,只需隐藏工作副本,进行比较,然后取消显示。
git stash save "temp"
git diff stash@{0} stash@{1}
git stash pop
这向您展示了存储堆栈顶部和工作文件夹之间的差异,方法是暂时将工作文件夹更改变为存储堆栈顶部(stash@{0}),将原始顶部向下移动一个(stash@{1}),然后在“新集合”位置使用原始顶部进行比较,以便您看到将其应用于当前工作顶部所产生的更改。
“但如果我现在没有任何工作怎么办?”那么你就处于正常的无聊状态。只需使用@Amber的答案
git stash show
或者@czerasz的回答
git diff stash@{0}
或者承认隐藏和取消隐藏是快速和容易的,只要取消隐藏更改并检查它们即可。如果你现在不想要它们,就扔掉它们(当前的索引/工作文件夹更改)。完全是这样
git stash apply
git diff
git reset
git checkout
如果你的工作树是脏的,你可以通过首先提交脏的工作树,然后将其与隐藏进行比较,将其与存储进行比较。然后,您可以使用脏的工作树撤消提交(因为您可能不希望在提交日志中有脏的提交)。
您还可以使用以下方法将两个储藏物相互比较(在这种情况下,您只需首先弹出其中一个储藏物)。
提交您的脏工作树:git添加。gitcommit-m“脏提交”将隐藏与提交区分开来:git diff HEAD存储@{0}然后,您可以恢复提交,并将其放回工作目录:git reset—软HEAD~1git重置。
现在,你已经用你的储藏物改变了肮脏的工作树,回到了最初的位置。
推荐文章
- 为什么我需要显式地推一个新分支?
- 如何撤消最后的git添加?
- Rubymine:如何让Git忽略Rubymine创建的.idea文件
- Gitignore二进制文件,没有扩展名
- Git隐藏错误:Git隐藏弹出并最终与合并冲突
- 了解Git和GitHub的基础知识
- 没有。Git目录的Git克隆
- Git与Mercurial仓库的互操作性
- 忽略git中修改(但未提交)的文件?
- “git restore”命令是什么?“git restore”和“git reset”之间有什么区别?
- Git合并与强制覆盖
- Git拉另一个分支
- 在Bash命令提示符上添加git分支
- 如何更改Git日志日期格式
- git pull -rebase和git pull -ff-only之间的区别