如何使用git diff显示提交者

时间:2014-10-14 12:13:27

标签: git

我在这里阅读了git diff手册http://git-scm.com/docs/git-diff,但我找不到答案。

我在git diff origin/master之后根据此格式git diff [--options] <commit> <commit> [--] [<path>…](省略了commit == HEAD)使用git fetch来查看在执行git merge origin/master之前已完成的更改}。

它非常有用,我可以在应用更改之前查看代码。我唯一的问题是我在团队中工作,我想知道哪个提交者对每个文件进行了更改。

我没有找到显示提交者的git diff的任何选项。查看提交者的最简单方法是什么(如果可能,请使用git diff

编辑:

我发现我的问题没有足够详细。

例如,当我做git diff时,我得到:

--- a/path/to/my/file.html
+++ b/path/to/my/file.html
@@ -xx,y +xx,y @@
-      {% if sett.value|lower != "false" %}
+      {% if sett.value|lower != False %}

所以我知道有人改变了这一行并提交了它。理想我希望有类似的东西:

User John Doe commit the following :
--- a/path/to/my/file.html
+++ b/path/to/my/file.html
@@ -xx,y +xx,y @@
-      {% if sett.value|lower != "false" %}
+      {% if sett.value|lower != False %}

3 个答案:

答案 0 :(得分:1)

如果您正在寻找修改某些代码行的人,那么

git diff可能不是您想要的工具。

您可以尝试使用git blame,其中&#34;使用最后修改该行&#34;的修订版中的信息来注释给定文件中的每一行。

编辑:如果您处于评论中描述的情况,您已完成git fetch并希望查看尚未合并的任何提交的提交者,那么您可以使用git log <remote>/<branch_name>。然后,您可以将输出限制为原点提前的提交数,例如git log -2 origin/master可以让您找到尚未合并到本地主分支的2个提交的提交者。

EDIT2:尝试git show,用于提交&#34;显示日志消息和文本差异&#34; (包括提交者)。它适用于单个提交,因此您需要指定要查看的那个,有many ways to do this,例如获取提交哈希,使用origin/master^等语法

答案 1 :(得分:1)

获取origin/master中最新提交的提交者的最简单方法是使用git log

git log -1 origin/master

-1指示git log仅显示一次提交origin/master

从这里开始,您可以为调整后的git log设置别名,例如使用:

git log -1 --pretty=format:"%an (%ae)" origin/master

将打印<Author Name> (<Author E-Mail>)

有关格式化输出的详细信息,请参阅git log的文档,添加别名,信任SO:How do I alias commands in git?

答案 2 :(得分:0)

假设您在跟踪分支上,那么您可以

 git log HEAD..@{u} -p

如果默认值不适合您,您可以调整日志参数以准确显示您想要的信息,但这应该非常接近您想要的信息。要明确显示提交者,您可以使用--pretty=fuller或将%cn和/或%ce添加到漂亮格式,以分别指定提交者名称和电子邮件。

您还没有使用跟踪分支,请将@{u}替换为您要合并的分支(origin/master