有可能在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修改的文件列表以及下方的逐行比较-剩下。 所有的藏品仍藏起来。

gitk查看存储

通过简单地使用存储使用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.