例如,我有一个像这样的项目
[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 Extensions,我无法找到一种方法来查看作者Michael的差异。
例如,我只想看到功能A的更改代码,当我单击提交1和2时,我可以看到这些提交之间的差异。但是当我过滤作者[迈克尔]并点击1和5时,我希望只能看到作者[迈克尔]的所有差异 - 但[汤姆]和[迪克]也有差异。
有什么方法可以查看作者的所有代码更改?我不关心我使用的工具(如SourceTree,Git Extensions,...)
答案 0 :(得分:1)
您可以使用git log --author=<pattern>
查看特定作者的所有提交,其中模式是正则表达式。
但是你似乎想要在仅由某个作者完成的更改提交之间进行差异,忽略之间的提交。这违背了Git的本性。从概念上讲,Git提交不是差异。而是每次提交都是提交时所有文件状态的完整快照。您不能在1和5之间取差异,而忽略2,3和4,因为5是1,2,3和4的顶点。
你可以cherry pick 1和5进入临时分支(并处理所有冲突),但我相信你正试图解决错误的问题。你有一个XY Problem。你真正想要的是看到&#34;功能A&#34;的所有变化。在这种情况下,他们碰巧由一位作者完成,但事实并非如此。
相反,您想要的是将您的功能组织到各个分支中,恰当地命名为&#34;功能分支&#34;或&#34;主题分支&#34;。每个功能的一个分支。在功能 完成 之前,分支不会合并,然后将其删除。这是允许多人处理多项功能的基本方式,而不会过早地分享未完成的工作并相互进入。
然后,当您想要查看功能A的更改时,您可以查看功能A的分支,无论是谁处理过该功能。
您可以阅读有关Branching Workflows in the Pro Git book的更多信息。
答案 1 :(得分:0)
试试这个:
git log --author="author_name"
答案 2 :(得分:0)
老问题了,但是为了那些寻找它的人-这是解决问题的方法。
git log -author | grep
)的所有提交awk -F
)中提取提交哈希值git show
)上运行git show 这是完整的命令:
git show `git log --author=bob | grep ^commit | awk -F ' ' '{print $2}'`