如何查看最后一次提交和现在之间的更改(在进行一些更改之后)

时间:2016-09-12 23:18:46

标签: git

与此question类似,但我如何看到上一次提交与当前状态之间发生了哪些变化,这会有一些变化。

因此,基于链接的问题,它将是这样的

两个不同的SHA之间的

git diff --name-only SHA1 SHA2

查看第十个最新提交和第五个最新提交(或左右)之间的差异:

git diff --name-only HEAD~10 HEAD~5

现在我在当前状态和最后一次提交之间尝试:

git diff HEAD HEAD~1

注意我会留下--name-only,因为我有兴趣查看文件中的更改内容。

3 个答案:

答案 0 :(得分:2)

  

...当前状态=进行了提交,更改了文件中的内容并且没有执行git add。

好的,在这种情况下,您希望将工作树文件与已提交的内容进行比较。 "已经承诺的东西"是HEAD(当前提交)或HEAD^1又名HEAD~1,即当前提交的第一个父级。

虽然有很多git diff个变种(git diff-indexgit diff-filesgit diff-tree),但最基本和最简单的变体git diff本身就是git diff <commit-specifier>变体。这是你需要的那个。

默认情况下,git add将指定的提交与当前工作树进行比较。所以如果你想看看你还没有git diff HEAD - 编辑:

HEAD

这为您提供了一个正常的,每天的差异,显示了如何更改--name-only&#34;的内容。进入&#34;当前在工作树中的内容&#34;。 (你可以添加--name-statusHEAD~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^numberHEAD~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