假設我有一個回購:
A - B - C <- master
\ D - E <- dev
然后,我創建一個新分支feature,dev并將其重新設定在master
A - B - C <- master
\ \ F - G <- feature
\ D - E <- dev
在進行變基時,我需要手動合并一些檔案以獲取F和G.
鑒于這種情況,當我完成 rebase 時,如何查看我在 rebase 期間所做的這些更改的差異?
更正式地說,我想在基于 with 的基礎上首先獲得與結果F提交 之間的差異。相同的(可能略有不同的命令)和來自此潛在變基的第二次提交。devmaster-XtheirsG
有沒有什么方法可以簡潔地做到這一點,而無需實際dev在 master 之上進行 rebase?
uj5u.com熱心網友回復:
TL;博士
顯示您想要的資訊的最簡單方法是區分差異。
故事
我傾向于在像你這樣的情況下比較提交的內容。
在 Bash 提示符下,命令
diff <(git show D) <(git show F)
將為您區分差異。
您會得到一些虛假的差異:提交和檔案的 sha1、行號(如果更改)以及背景關系行(如果更改)
因此,您需要查找以 、 和 開頭的行,< 并查看D 中的更改集與 F 中的更改集之間的真正區別。< -> > -
您出于任何原因手動進行的任何更改,無論是修復沖突還是進行進一步更改,都將顯示在此差異中。
更清潔的輸出
OP @Lezkus 在評論中提出的 diff 命令的這個變體消除了 diff 輸出中的很多噪音:
diff -I '@@[^@]*@@' -I '^index.*' -I 'commit.*' <(git show D) <(git show F)
警告
這不完全是你所要求的——一個將 D 選到 C 上的腳本,對結果進行比較,然后將其全部還原會更準確地產生你所要求的——但我認為這是一個不錯的折衷方案,而且運行起來非常快,無需設定或恢復臨時操作。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/419593.html
標籤:
