如何查看提交中的更改?

当我做git diff COMMIT我看到了这个提交和HEAD(afaik)之间的变化,但是我希望看到这个提交所做的更改。

我还没有发现任何明显的差异/日志选项,将给我的输出。

  • 如何阻止git使文件在Cygwin上不可执行?
  • 列出特定文件的所有提交
  • 有没有在混帐“混帐拉 - 干运行”选项?
  • Git钩子发送电子邮件通知回购更改
  • Google Code + SVN或GitHub + Git
  • Git分支删除
  • 为什么Git使用密码散列函数?
  • 如何提交没有改变和新消息?
  • 13 Solutions collect form web for “如何查看提交中的更改?”

    要查看特定COMMIT哈希的差异:

    git diff COMMIT^ COMMIT将向您显示该COMMIT的祖先和COMMIT之间的区别。 查看关于git diff的手册页,了解有关^符号及其朋友的命令和gitrevisions的详细信息。

    另外, git show COMMIT会做类似的事情。 (提交的数据,包括其差异)请参阅git show手册页 。

    正如在“ 使用它的父项的git提交差异的速记 ”中所提到的,你也可以使用git diff

     git diff COMMIT^! 

    要么

     git diff-tree -p COMMIT 

    用git show,你需要(为了专注于diff而已)做:

     git show --color --pretty=format:%b $COMMIT 

    COMMIT参数是一个commit-ish

    提交对象或可recursion解引用到提交对象的对象。 以下是所有提交:提交对象,指向提交对象的标记对象,指向指向提交对象的标记对象的标记对象等。

    请参阅gitrevision“指定修订”来引用提交。
    另请参阅“ Git中树是什么意思? ”。

    你也可以试试这个简单的方法:

     git show <COMMIT> 

    git show显示最近提交中所做的更改。

    相当于git show HEAD

    git show HEAD~1会让你回到1提交。

    从git-diff(1)的手册页:

     git diff [options] [<commit>] [--] [<path>…] git diff [options] --cached [<commit>] [--] [<path>…] git diff [options] <commit> <commit> [--] [<path>…] git diff [options] <blob> <blob> git diff [options] [--no-index] [--] <path> <path> 

    使用中间的第三个:

     git diff [options] <parent-commit> <commit> 

    也可以从底部的“ 示例”部分的相同手册页中获取:

     $ git diff HEAD^ HEAD <3> 

    比较上次提交和上次提交之前的版本。

    不可否认的是,它有点混乱,因此会更不容易混淆

    比较最近的提交和提交之前的提交。

    这似乎是做这个工作; 我用它来展示合并带来了什么。

      git whatchanged -m -n 1 -p <sha of merge commit> 

    另一种可能性

    git log -p COMMIT -1

     git difftool COMMIT^ <commit hash> 

    也可以,如果你已经configuration你的difftool。

    在这里看到如何configurationdifftool或在这里的手册页

    另外,您可以使用git diff-tree --no-commit-id --name-only -r <commit hash>来查看哪些文件在给定提交哈希中被更改/提交

    通过提交使用git show COMMIT来查看作者和时间。 这将导致这样的事情:

     commit 13414df70354678b1b9304ebe4b6d204810f867e Merge: a2a2894 3a1ba8f Author: You <you@you.com> Date: Fri Jul 24 17:46:42 2015 -0700 Merge remote-tracking branch 'origin/your-feature' 

    如果要查看哪些文件已被更改,请使用git diff --stat a2a2894 3a1ba8f上面的Merge行中的值运行以下git diff --stat a2a2894 3a1ba8f

    如果你想看到实际的差异,运行git --stat a2a2894 3a1ba8f

    首先得到提交id使用,

    git log #全部列出

    要么

    git log -p -1 #最后一个提交ID

    复制提交ID。

    现在我们使用2种方法列出来自特定提交的更改,

    方法1:

    git diff commit_id^! #commit id像这样1c6a6000asad012

    方法2:

     git show commit_id eg: git show 1c6a600a 

    你可以使用git diff HEAD HEAD^1来查看父提交的差异。

    如果你只想看到文件列表,添加选项--stat到它。

    我在Windows 10上运行git 2.6.1.windows.1版本,所以我需要对Nevik的答案进行一些修改(而不是插入符号):

     git diff COMMIT~ COMMIT 

    其他select是引用插入符号:

     git diff "COMMIT^" COMMIT 

    这个命令会得到你的git parent commit-hash

     git log -n 2 <commit-hash> 

    在那之后, git diff-tool <commit-hash> <parent-commit-hash>

    例如:

     bonnie@bonnie ~/ $ git log -n 2 7f65b9a9d3820525766fcba285b3c678e889fe3 commit 7f65b9a9d3820525766fcba285b3c678e889fe3b Author: souparno <souparno.majumder@gmail.com> Date: Mon Jul 25 13:17:07 2016 +0530 css changed to maintain the aspect ratio of the channel logos and to fit them properly commit c3a61f17e14e2b80cf64b172a45f1b4826ee291f Author: souparno <souparno.majumder@gmail.com> Date: Mon Jul 25 11:28:09 2016 +0530 the ratio of the height to width of the channel images are maintained 

    在这之后

     git difftool 7f65b9a9d3820525766fcba285b3c678e889fe3b c3a61f17e14e2b80cf64b172a45f1b4826ee291f