[英]how can I use git log to use parent #1 to generate the patch
我可以像這樣看到我的 git 歷史記錄的左側車道:
git log origin/master --pretty=oneline --first-parent --decorate=no
我的項目設置方式,大多數時候這些是唯一重要的變化。
但是,在使用-G
搜索補丁時,我想搜索提交與其父 #1 之間的差異,以便搜索涵蓋項目中發生的每個更改。
git log origin/master --pretty=oneline --first-parent --decorate=no -G keyword
原因是樹看起來像這樣
出於某些目的,我想將整個梯形視為一個動作。 在上述git log
生成的列表中,它顯示為單個命令,但我無法再以該格式搜索歷史記錄,以便我可以立即知道發生在哪個 git 組中。
如果任何選項可以做到這一點也適用於 gitk 那么當我 go
gitk origin/master --first-parent
並使其顯示為單個提交
我可以點擊它並查看由
git diff [merge commit]:[merge commit]^
git 文檔提到了環境變量GIT_EXTERNAL_DIFF
和GIT_DIFF_OPTS
,聽起來它們可能正是我正在尋找的,但我真的找不到任何示例。
將-m
標志添加到您已有的命令中:
git log -m --pretty=oneline --first-parent --decorate=no -G keyword origin/master
(我將起點移到了選項的末尾,但對於 Git,只要不在雙連字符--
之后,您可以將其放在任何您喜歡的位置)。
-m
選項(將其視為合並的縮寫)使git log
將合並提交視為一系列多個單獨的提交,每個提交都有相同的子提交,但每個提交都有一個父提交。 將它與--first-parent
結合使用時,它將合並提交視為普通的非合並提交,第一個父代作為其唯一的父代。 在任何一種情況下,您都會得到一個差異,然后-G
可以搜索該差異。
(不幸的是,這不適用於gitk
,它不直接使用git log
。它在內部運行自己的git rev-list
,然后自行完成其他所有操作。)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.