如何查看作者的所有代码更改?
问题描述:
例如,我有这样的如何查看作者的所有代码更改?
[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]
我使用Git扩展项目,我不能找到一种方法只作者Michael查看差异。
例如,我只想查看功能A的更改代码,当单击提交1和2时,我可以看到这些提交之间的区别。但是当我过滤作者[迈克尔]并点击1和5时,我希望看到作者[迈克尔]的所有差异 - 但是[汤姆]和[迪克]也有差异。
有什么办法可以查看作者的所有代码更改?我不在乎我使用的工具(如SourceTree,Git的扩展,...)
答
您可以通过一个特定的作者与git log --author=<pattern>
查看全部提交,该模式是正则表达式。
但是,您似乎想要在仅由某个作者完成的更改提交之间进行差异化,而忽略提交之间的提交。这违背了Git的本质。 Git提交在概念上不是差异。相反,每次提交都是提交时所有文件状态的完整快照。因为5是1,2,3和4的高点,所以不能在1和5之间进行差异化处理。
您可以将1和5的cherry pick转换为临时分支(和处理所有冲突),但我相信你正试图解决错误的问题。你有一个XY Problem。你真正想要的是看到“功能A”上的所有变化。在这种情况下,它们恰好是由一位作者完成的,但情况并非总是如此。
相反,你想要的是将你的特征组织成单独的分支,恰当地命名为“功能分支”或“主题分支”。每个功能的一个分支。直到功能完成,然后它被删除,该分支不合并。这是允许多个人在多个功能上工作而不过早分享未完成的工作并彼此相处的基本方式。
然后,当您只想查看功能A的更改时,您可以查看功能A的分支,无论是谁在使用该功能。
您可以阅读更多关于Branching Workflows in the Pro Git book。
答
试试这个:
git log --author="author_name"
哦,我明白了。所以我想我可以写一个工具来做我的情况。像这样: 1.获取迈克尔已更改的所有最新文件。 2.迈克尔文件与初始(原始)提交文件之间的差异。 3.多田 - 我得到了我想要的。 现在我所要做的就是找到这些git命令。谢谢您:D – 123iamking
@ 123iamking我强烈建议您考虑这是一次性问题,并使用功能分支前进。他们消除了许多问题。 – Schwern
感谢您的建议:D和XY问题知识是一个伟大的 - 感谢您的分享。 – 123iamking