如何查看取消隐藏将对当前工作树所做的更改?我想知道在应用它们之前将进行哪些更改!
当前回答
如果隐藏的更改所基于的分支在此期间发生了更改,则此命令可能有用:
git diff stash@{0}^!
这会将隐藏与它所基于的提交进行比较。
其他回答
如果隐藏的更改所基于的分支在此期间发生了更改,则此命令可能有用:
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 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 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 stash@{0}
这将显示修改的文件。然后,为了在difftool中获得良好的视觉差异,我需要:
git difftool --dir-diff stash@{0} stash@{0}^
这将同时显示给定存储与其父存储的所有差异。
您可以在~/.gitconfig中配置diff工具,例如使用Meld:
...
[diff]
tool = meld
推荐文章
- 在单个文件中重新启动/撤消冲突解决方案
- Visual Studio代码如何解决合并冲突与git?
- 无法推送到远程分支,无法解析到分支
- Git:如何将数据库重置为特定的提交?
- 如何在合并期间使用Git和命令行保存本地文件或远程文件?
- 能够用一个命令推到所有git遥控器?
- 重新基于Git合并提交
- 忽略已经签入目录的内容?
- 如何从windows cmd保存git提交消息?
- (Mac) -bash: __git_ps1:命令未找到
- 如何删除多个已删除的文件在Git仓库
- 使用vimdiff查看所有' git diff '
- 如何拉特定的目录与git
- 本地存储库中的文件与源文件之间的差异
- 将Git存储库内容移动到另一个存储库,保存历史记录