我上演致力于一些改变; 我怎么能看到这是上演了下次提交的所有文件的差异? 我知道的git的状态 ,但我希望看到实际的diff -不仅仅是被上演的文件名。
我看到的git-DIFF(1)手册页说:
git的差异[--options] [ - ] [...]
这种形式,查看您所作出相对指数(今后提交临时区域)的变化。 换句话说,差异是你能告诉什么混帐进一步添加到索引,但你仍然没有。 您可以通过舞台用git-ADD(1)这些变化。
不幸的是,我不能完全理解这一点。 必须有一些方便的一个班轮,我可以创造一个别名,对不对?
Answer 1:
它应该只是:
git diff --cached
--cached
装置示出了在高速缓存/指数的变化(即暂存的变更)逆水HEAD
。 --staged
是一个代名词--cached
。
--staged
和--cached
没有指向HEAD
,只是差相对于HEAD
。 如果您樱桃采摘什么用犯git add --patch
(或git add -p
), --staged
会返回一个正在上演。
Answer 2:
一个简单的图形,使之更清楚:
git的差异
显示工作目录和索引之间的变化。 这说明了什么已经改变,但并不上演提交。
git的差异--cached
显示索引和头部(这是最后一次提交在此分支)之间的变化。 这说明了什么已经被添加到索引并上演提交。
git的差异HEAD
显示了所有工作目录和HEAD(其包括在索引中的变化)之间的变化。 这说明所有的变化,因为最后一次提交,无论其是否已经上演提交与否。
另外 :
还有更详细一点365Git。
Answer 3:
如果你有兴趣在视觉并排侧来看, 漫可视化差异工具可以做到这一点。 它甚至会显示三个窗格如果一些但不是所有的变化都在上演。 在冲突的情况下,甚至会出现四个窗格。
与调用它
diffuse -m
使用Git的工作副本。
如果你问我,最佳的视觉区别我看到了十年。 此外,它不是具体到Git的方法:它互操作与其他VCS,包括SVN,水银,集市,过多...
另请参见: 同时显示上演和在git的差异工作树?
Answer 4:
需要注意的是git status -v
也显示出阶段性的变化! (这意味着你需要有上演- git add
-一些变化没有上演的变化,没有差异git status -v
。
它确实是因为Git的1.2.0,2006年2月 )
在其漫长的形式(默认), git status
具有一个未记录的“详细”选项,它实际显示HEAD和索引之间的差异。
而它即将变得更加完整:详见“ 显示双方上演和在git的差异工作树? (GIT 2.3.4+,Q2 2015)”:
git status -v -v
Answer 5:
您可以使用此命令。
git diff --cached --name-only
该--cached
的选项git diff
手段来获得筹备的文件,且--name-only
选项意味着只得到文件的名称。
Answer 6:
从1.7版及更高版本应该是:
git diff --staged
Answer 7:
利用视觉差异的工具
默认回答(在命令行)
这里的顶级答案正确显示如何查看缓存/上演的变化Index
:
$ git diff --cached
或$ git diff --staged
这是一个别名。
启动可视化差异工具取而代之
默认的答案会吐出在混帐的bash(即在命令行或控制台)的差异变化。 对于那些谁喜欢的上演文件差异的可视化表示,有混帐中提供一个脚本,启动了观看,而不是显示在命令行,每个文件调用一个可视化差异工具difftool
:
$ git difftool --staged
这将这样做,因为同样的git diff --staged
,除了比较工具运行的任何时间(即每一个文件被DIFF处理时间),它会启动默认的视觉差异的工具(在我的环境,这是kdiff3) 。
该工具启动后,git的差异脚本将暂停,直到你的视觉差异的工具被关闭。 因此,你需要关闭每个文件才能看到下一个。
您可以随时使用difftool
到位的diff
在Git命令
对于所有的视觉差异的需求, git difftool
将在任何地方工作的git diff
命令,包括所有选项。
例如,有视觉差异的工具推出不问是否做对每个文件中添加-y
选项(通常我想你会想要这个!):
$ git difftool -y --staged
在这种情况下,将每个文件拉起在视觉差异的工具,一次一个,带来了下一个工具关闭后。
还是要看是在上演特定文件的DIFF Index
:
$ git difftool -y --staged <<relative path/filename>>
对于所有的选项,请参见手册页:
$ git difftool --help
设置Visual的Git工具
要使用其他的可视化工具的git比默认,使用-t <tool>
选项:
$ git difftool -t <tool> <<other args>>
或者,请参阅如何混帐配置为使用不同的默认可视化差异工具difftool手册页。
Answer 8:
如果你的意图是推动目标的远程回购分支和你第一遍在提交更改日志不完整,你可以纠正推这样前提交语句。
本地
...做一些改变?
git diff # look at unstaged changes
git commit -am"partial description of changes"
......记得未尽更多的变化犯...
git的差异起源/主站#看演出,但不改变推
...修改上演提交语句...
git commit --amend -m"i missed mentioning these changes ...."
git push
Answer 9:
对于临时区域VS库比较使用
$git diff --staged
对于工作VS库比较使用
$ git diff
但是,如果一个文件被更改,并添加到临时区域( $ git add fileName
),我们试图看到(的区别$ git diff
)。 因为该文件是在临时区域,它不会与仓库相比较它不会返回任何区别。
Answer 10:
如果你有一个以上的文件,上演的变化,它可能更实际使用git add -i
,然后选择6: diff
,终于挑文件(S)你感兴趣的内容。
Answer 11:
默认情况下,git的差异是用来显示未添加到git的更新文件列表的变化。 但是,如果你想显示被添加或stagged那么你需要提供额外的选项,可以让git的知道你有兴趣stagged或添加的文件diff的变化。
$ git diff # Default Use
$ git diff --cached # Can be used to show difference after adding the files
$ git diff --staged # Same as 'git diff --cached' mostly used with latest version of git
例
$ git diff
diff --git a/x/y/z.js b/x/y/z.js index 98fc22b..0359d84 100644
--- a/x/y/z.js
+++ b/x/y/z.js @@ -43,7 +43,7 @@ var a = function (tooltip) {
- if (a)
+ if (typeof a !== 'undefined')
res = 1;
else
res = 2;
$ git add x/y/z.js
$ git diff
$
一旦你添加的文件,你不能使用“git的差异”的默认。你不得不这样做: -
$ git diff --cached
diff --git a/x/y/z.js b/x/y/z.js index 98fc22b..0359d84 100644
--- a/x/y/z.js
+++ b/x/y/z.js @@ -43,7 +43,7 @@ var a = function (tooltip) {
- if (a)
+ if (typeof a !== 'undefined')
res = 1;
else
res = 2;
Answer 12:
git gui
和git-cola
是图形工具,让您查看和操作指标。 都具备上演文件简单的视觉差异列表,并git-cola
也可以发动更复杂并排侧可视化差异工具。
见我在密切相关答案如何从Git的索引中删除一个文件? ,也是这个官方目录的Git - GUI客户端 。
Answer 13:
想想gitk
工具还提供了Git和看到的变化是非常有用的
文章来源: How do I show the changes which have been staged?