与此question类似,但我如何看到上一次提交与当前状态之间发生了哪些变化,这会有一些变化。
因此,基于链接的问题,它将是这样的
两个不同的SHA之间的:
git diff --name-only SHA1 SHA2
查看第十个最新提交和第五个最新提交(或左右)之间的差异:
git diff --name-only HEAD~10 HEAD~5
现在我在当前状态和最后一次提交之间尝试:
git diff HEAD HEAD~1
注意我会留下--name-only
,因为我有兴趣查看文件中的更改内容。
答案 0 :(得分:2)
...当前状态=进行了提交,更改了文件中的内容并且没有执行git add。
好的,在这种情况下,您希望将工作树文件与已提交的内容进行比较。 "已经承诺的东西"是HEAD
(当前提交)或HEAD^1
又名HEAD~1
,即当前提交的第一个父级。
虽然有很多git diff
个变种(git diff-index
,git diff-files
和git diff-tree
),但最基本和最简单的变体git diff
本身就是git diff <commit-specifier>
变体。这是你需要的那个。
默认情况下,git add
将指定的提交与当前工作树进行比较。所以如果你想看看你还没有git diff HEAD
- 编辑:
HEAD
这为您提供了一个正常的,每天的差异,显示了如何更改--name-only
&#34;的内容。进入&#34;当前在工作树中的内容&#34;。 (你可以添加--name-status
或HEAD~1
来获取文件名,或文件名和状态代码,但是你说你想要完整的差异。)
要了解如何从git diff HEAD~1
更改为当前工作树,请使用git diff
。
很高兴知道如何引用它们......
基本git diff <commit>
命令实际上可以完成其中的大多数(其中一些功能是在Git版本1.6和1.7中新添加的,但是人们今天在实践中使用的最古老版本的Git似乎是1.7 .1左右,这些应该可用):
HEAD
:比较&lt; commit&gt;到工作树。何时&lt; commit&gt;是你最后比较当前提交(不是索引)与工作树的文字git diff
。
git add
(没有额外的标志参数):比较当前的索引与工作树。这类似于第一个,但不一样。特别是,一旦你git diff
一个文件,你就更新索引中的版本,所以现在索引版本将与工作树版本匹配,因此你不会在--name-only
输出中看到它,即使它实际上还没有提交。
(当然,您可以安全地添加一些标记参数,例如--staged
。关键是您无法添加--cached
或{{1}这里。)
git diff --staged
(也可以拼写为git diff --cached
):比较HEAD
(当前提交)与索引。也就是说,你在前面看到的任何东西(无标志)git diff
,你可以git add
到索引来更新索引;那么你不会在git diff
中看到它,但你 会在git diff --staged
中看到它。
git diff <commit1> <commit2>
:比较两次提交。例如,git diff HEAD~1 HEAD
将一步返回提交(HEAD~1
)与当前提交(HEAD
)进行比较。
还有更多选择;有关更完整的列表,请参阅the git diff
documentation。
(HEAD^number
和HEAD~number
之间存在显着差异,但仅当 number 部分不是1.时,tilde-suffix语法会向后移动一些< em> first parents ,而hat-suffix语法选择 n&#39;父,这实际上只对合并提交有意义。你可以省略数字并重复帽子后缀,例如,HEAD^^^^
,它意味着与HEAD~4
相同。当您回过头时,请使用您更容易输入的内容:数字默认为1。)
答案 1 :(得分:1)
git diff HEAD^ HEAD
可以使用HEAD ^访问先前的提交,因此该命令可以让您看到当前提交和先前提交的差异。
您可以使用1.8.5版本中的git diff @~..@
。
答案 2 :(得分:0)
git diff-index <commit>
将<commit>'s tree
与工作树,文件系统上的文件以及--cached
进行比较,以便将<commit>'s tree
与索引进行比较。如果你想在文件中看到差异,加上-p
。