簡體   English   中英

我如何使用 git 日志來使用父 #1 生成補丁

[英]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_DIFFGIT_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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM