2017-04-18 60 views
0

例如,我有這樣的如何查看作者的所有代碼更改?

[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的擴展,...)

回答

0

您可以通過一個特定的作者與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

+0

哦,我明白了。所以我想我可以寫一個工具來做我的情況。像這樣: 1.獲取邁克爾已更改的所有最新文件。 2.邁克爾文件與初始(原始)提交文件之間的差異。 3.多田 - 我得到了我想要的。 現在我所要做的就是找到這些git命令。謝謝您:D – 123iamking

+0

@ 123iamking我強烈建議您考慮這是一次性問題,並使用功能分支前進。他們消除了許多問題。 – Schwern

+0

感謝您的建議:D和XY問題知識是一個偉大的 - 感謝您的分享。 – 123iamking

0

試試這個:

git log --author="author_name" 
相關問題