有可能在git中预览隐藏内容吗?
我经常把工作放在后面,其他的东西出来,几个星期后,我想检查存储,并找出如果我将它应用到工作树目前的状态会发生什么变化。
我知道我可以在存储上做一个git diff,但是这显示了工作树和存储之间的所有区别,而我只是想知道存储应用会发生什么变化。
我怎样才能做到这一点?
git stash show
将显示您最近的藏匿处发生变化的文件。 你可以添加-p
选项来显示差异。
git stash show -p
如果您感兴趣的存储器不是最近的存储器,则将该存储器的名称添加到该命令的末尾:
git stash show -p stash@{2}
要查看隐藏的当前列表,请使用
git stash list
你应该可以看到一个列表,比如
stash@{0}: WIP on ... stash@{1}: ... stash@{2}: ... ...
要查看任何这些窗口的diff,使用命令git stash show -p stash@{n}
我是gitk
的graphics用户界面的粉丝,可视化git回购。 您可以查看最后一个项目:
gitk stash
您也可以使用查看您的任何隐藏的更改(由git stash list
)。 例如:
gitk stash@{2}
在下面的截图中,您可以看到左上angular的提交,提交历史的时间和地点,右下angular修改的文件列表以及下方的逐行比较-剩下。 所有的藏品仍藏起来。
通过简单地使用存储使用git stash apply
? 这不会删除存储,所以你可以重置你的工作树,而不会丢失隐藏的工作,如果你不喜欢的变化。 如果你喜欢它们,你可以简单地使用git stash drop
来移除git stash drop
。
要查看未取消隐藏的所有更改,请执行以下操作:
git stash show -p stash@{0}
要查看未取消隐藏的某个特定文件的更改,请执行以下操作:
git diff HEAD stash@{0} -- path/to/filename.php
在gitkbuild议之外是否有可能在git中预览隐藏内容? 你可以安装tig并调用tig stash
。 这个免费/开放的控制台程序还允许您select哪个存储比较
您可以通过以下命令查看所有窗口的列表:
$ git stash list stash@{0}: WIP on dev: ddd4d75 spelling fix stash@{1}: WIP on dev: 40e65a8 setting width for messages ...... ...... ...... stash@{12}: WIP on dev: 264fdab added token based auth
最新的藏品是第一个。
您可以简单地select上面列表中提供的存储索引n
,并使用以下命令来查看存储的细节
git stash show -p stash@{3}
同样的,
git stash show -p stash@{n}
您也可以使用以下命令来检查差异:
git diff HEAD stash@{n} -- /path/to/file
我用这个来看看所有的颜色差异突出显示(在Fedora 21上):
git stash list | awk -F: '{ print "\n\n\n\n"; print $0; print "\n\n"; system("git -c color.ui=always stash show -p " $1); }' | less -R
(改编自Git:查看隐藏什么而不应用隐藏 )
首先,我们可以利用git存储列表来获取所有的存储条目:
$git stash list stash@{0}: WIP on ... stash@{1}: WIP on .... stash@{2}: WIP on ...
然后我们可以使用git stash show stash@{N}
检查特定存储N
下的文件。 如果我们开火,那么我们可能会得到:
$ git stash show stash@{2} fatal: ambiguous argument 'stash@2': unknown revision or path not in the working tree. Use '--' to separate paths from revisions, like this: 'git <command> [<revision>...] -- [<file>...]'
原因可能是shellpopup花括号,git看到了stash@2
而不是stash@{2}
。 为了解决这个问题,我们需要使用大括号作为单引号:
git stash show stash@'{2'} com/java/myproject/my-xml-impl.xml | 16 ++++++++-------- com/java/myproject/MyJavaClass.java | 16 ++++++++-------- etc.