Git diff对一个藏匿处

我怎样才能看到这些变化会对当前的工作树造成影响? 我想知道在应用之前会做出什么改变!

查看最近的隐藏:

git stash show -p 

看到一个任意的藏匿处:

 git stash show -p stash@{1} 

git stash manpages:

默认情况下,该命令显示diffstat,但它会接受任何已知的git diff格式(例如,git stash show -p stash @ {1}以查看修补程序forms中第二个最近的stash)。

要查看最近的隐藏:

 git stash show -p 

看到一个任意存储:

 git stash show -p stash@{1} 

另外,我使用git diff来比较存储与任何分支。

您可以使用:

 git diff stash@{0} master 

查看与分支主人相比的所有更改。

或者你可以使用:

 git diff --name-only stash@{0} master 

轻松find只更改的文件名称。

如果您的存储更改所基于的分支在此期间已更改,则此命令可能会有用:

 git diff stash@{0}^! 

这比较了存储和它所基于的提交。

如果你的工作树很脏 ,你可以通过首先提交脏工作树来比较它,然后比较它到存储器。 之后,你可以撤销对脏工作树的提交(因为你可能不想在你的提交日志中有这样的提交)。

您也可以使用下面的方法来比较两个窗口(在这种情况下,您只是首先popup其中一个窗口)。

  • 提交你的肮脏的工作树:

     git add . git commit -m "Dirty commit" 
  • 用这个提交区分存储:

     git diff HEAD stash@{0} 
  • 然后,之后,您可以恢复提交,并将其放回工作目录中:

     git reset --soft HEAD~1 git reset . 

现在,你已经把脏兮兮的工作树与你的存储区分开了,并回到你最初的位置。

这适用于我在git版本1.8.5.2上:

 git diff stash HEAD 

如果你有差异的工具(比如超越比较)

 git difftool stash HEAD 

@ Magne的答案是唯一一个(很晚)的答案,这个答案是对这个问题的最灵活/有用的解释,但是这个答案不是必要的。 而不是提交和重置,只是隐藏你的工作副本,比较,然后荡然无存。

 git stash save "temp" git diff stash@{0} stash@{1} git stash pop 

通过临时让您的工作文件夹更改存储堆栈的顶部(存储@ {0}),将原始的顶部向下移动一个(存储@ {1}),该存储就是您存储堆栈顶部与工作文件夹之间的区别然后使用“新设置”位置中的原始顶部进行比较,以便您可以看到将其应用于当前工作之上的变化。

“但是如果我现在没有任何工作呢?” 那你就是在无聊的情况下。 只要用@琥珀的答案

 git stash show 

或@ czerasz的答案

 git diff stash@{0} 

或者承认不pipe怎样,存放和清除都是快速和容易的,只是不加修改地检查它们。 如果你现在不想让他们把当前的索引/工作文件夹改变掉。 完整的

 git stash apply git diff git reset git checkout 

FWIW 对于所有其他的答案,这可能有点多余,与现在接受的答案非常相似; 但也许它会帮助别人。

git stash show --help会给你所有你需要的; 包括隐藏显示信息。

显示[<存储>]

显示存储器中logging的更改,作为隐藏状态与其原始父项之间的差异。 当没有给出,显示最新的一个。 默认情况下,该命令显示diffstat,但它会接受任何已知的git diff格式(例如,git stash show -p stash @ {1}以查看修补程序forms中第二个最近的stash)。 您可以使用stash.showStat和/或stash.showPatchconfigurationvariables来更改默认行为。

结合我在这个线程中学到的东西,当我想看看“什么是内部存储”时,我首先运行:

 git stash show stash@{0} 

这将显示哪些文件被修改。 然后,为了在difftool中获得一个很好的视觉差异,我做:

 git difftool --dir-diff stash@{0} stash@{0}^ 

这将显示所有的差异立即对其父母的给定藏匿。

你可以在~/.gitconfigconfigurationdiff工具,比如用Meld :

 ... [diff] tool = meld