如何查看作者的所有代码更改?

123*_*ing 6 git version-control filter

例如,我有一个这样的项目

[ID]--[Date]-------[Commit message]-------[Author]

[5]--[Today]-------[Update Feature A]-----[Michael]

[4]--[Yesterday]---[Add Feature Y]--------[Tom]

[3]--[1 day ago]---[Add Feature X]--------[Dick]

[2]--[2 days ago]--[Add feature A]--------[Michael]

[1]--[3 days ago]--[First commit]---------[Michael]
Run Code Online (Sandbox Code Playgroud)

我正在使用 Git 扩展,但找不到仅查看作者 Michael 的差异的方法。

例如,我只想查看功能 A 的更改代码,当我单击提交 1 和 2 时,我可以看到这些提交之间的差异。但是,当我过滤作者 [Michael] 并单击 1 和 5 时,我希望仅看到作者 [Michael] 的所有差异 - 但也有 [Tom] 和 [Dick] 的差异。

有什么方法可以查看作者的所有代码更改吗?我不在乎我使用哪个工具(例如 SourceTree、Git Extensions,...)

Lou*_*aga 6

老问题,但为了那些寻找它的人 - 这是如何做到的。

  1. 获取请求用户的所有提交 ( git log -author | grep)
  2. 从输出中提取提交哈希值 ( awk -F)
  3. 对这些哈希值运行 git show ( git show)

这里结束是完整的命令:

git show `git log --author=bob | grep ^commit | awk -F ' ' '{print $2}'`
Run Code Online (Sandbox Code Playgroud)

  • 如果您只想查看提交和更改的列表,可以使用“git log -p --author=bob” (3认同)

Sch*_*ern 5

您可以查看特定作者的所有提交,其中git log --author=<pattern>模式是正则表达式。

但是您似乎想要区分仅由某个作者所做的更改的提交之间的差异,而忽略之间的提交。这违背了 Git 的本质。从概念上讲,Git 提交并不是差异。相反,每次提交都是提交时所有文件状态的完整快照。您不能在忽略 2、3 和 4 的情况下比较 1 和 5 之间的差异,因为 5 是 1、2、3 和 4 的顶点。

您可以1 和 5 挑选到临时分支中(并处理所有冲突),但我相信您正在尝试解决错误的问题。你有一个XY 问题。您真正想要的是看到“功能 A”上的所有更改。在这种情况下,它们恰好是由单个作者完成的,但情况并非总是如此。

相反,您想要的是将功能组织成单独的分支,恰当地命名为“功能分支”或“主题分支”。每个功能一个分支。直到功能完成后才会合并分支然后将其删除。这是允许多人处理多个功能的基本方式,而不会过早地共享未完成的工作并互相妨碍。

然后,当您只想查看功能 A 的更改时,您可以查看功能 A 的分支,无论谁参与了该功能。

您可以在 Pro Git 书中阅读有关分支工作流程的更多信息。