設定與配置
取得與建立專案
基本快照
分支與合併
分享與更新專案
檢視與比較
修補
除錯
電子郵件
外部系統
伺服器管理
指南
管理
底層命令
- 2.44.1 → 2.47.0 無變更
-
2.44.0
02/23/24
- 2.43.1 → 2.43.5 無變更
-
2.43.0
11/20/23
- 2.35.1 → 2.42.3 無變更
-
2.35.0
01/24/22
- 2.7.6 → 2.34.8 無變更
-
2.6.7
05/05/17
- 2.1.4 → 2.5.6 無變更
-
2.0.5
12/17/14
概要
git merge-file [-L <current-name> [-L <base-name> [-L <other-name>]]] [--ours|--theirs|--union] [-p|--stdout] [-q|--quiet] [--marker-size=<n>] [--[no-]diff3] [--object-id] <current> <base> <other>
說明
給定三個檔案 <current>
、<base>
和 <other>
,git merge-file 將從 <base>
到 <other>
的所有變更合併到 <current>
中。結果通常會放入 <current>
中。git merge-file 對於合併對原始檔案的個別變更很有用。假設 <base>
是原始檔案,而 <current>
和 <other>
都是 <base>
的修改版本,則 git merge-file 會合併這兩項變更。
如果 <current>
和 <other>
在相同的程式碼行區段中都有變更,就會發生衝突。如果找到衝突,git merge-file 通常會輸出警告,並以包含 <<<<<<< 和 >>>>>>> 標記的程式碼行括住衝突。典型的衝突看起來會像這樣
<<<<<<< A lines in file A ======= lines in file B >>>>>>> B
如果有衝突,使用者應該編輯結果並刪除其中一個選項。然而,當 --ours
、--theirs
或 --union
選項生效時,這些衝突會分別偏好來自 <current>
的程式碼行、來自 <other>
的程式碼行或兩者的程式碼行來解決。衝突標記的長度可以使用 --marker-size
選項指定。
如果指定了 --object-id
,則會發生完全相同的行為,但不會將要合併的內容指定為檔案,而是指定為參考 blob 的物件 ID 清單。
此程式的結束值在發生錯誤時為負數,否則為衝突數量(如果衝突數量超過該數量,則截斷為 127)。如果合併乾淨,則結束值為 0。
git merge-file 的設計目的是成為 RCS merge 的最小副本;也就是說,它會實作 git[1] 需要的 RCS merge 的所有功能。
選項
- --object-id
-
將要合併的內容指定為目前儲存庫中的 blob,而不是檔案。在這種情況下,操作必須在有效的儲存庫內進行。
如果指定了
-p
選項,合併的檔案(包括任何衝突)會照常輸出到標準輸出;否則,合併的檔案會寫入物件儲存區,而其 blob 的物件 ID 會寫入標準輸出。 - -L <label>
-
此選項最多可以指定三次,並指定要在衝突報告中取代對應檔案名稱的標籤。也就是說,
git merge-file -L x -L y -L z a b c
會產生看起來像是來自檔案 x、y 和 z 而不是來自檔案 a、b 和 c 的輸出。 - -p
-
將結果傳送到標準輸出,而不是覆寫
<current>
。 - -q
-
安靜模式;不要警告衝突。
- --diff3
-
以「diff3」樣式顯示衝突。
- --zdiff3
-
以「zdiff3」樣式顯示衝突。
- --ours
- --theirs
- --union
-
不要將衝突留在檔案中,而是偏好我方(或他們方或兩方)的程式碼行來解決衝突。
- --diff-algorithm={patience|minimal|histogram|myers}
-
在合併時使用不同的 diff 演算法。目前的預設值是「myers」,但選取較新的演算法(例如「histogram」)可以協助避免因不重要的相符程式碼行(例如來自不同函式的括號)而發生的錯誤合併。另請參閱 git-diff[1]
--diff-algorithm
。
範例
-
git merge-file README.my README README.upstream
-
合併自 README 以來,README.my 和 README.upstream 的變更,嘗試合併它們,並將結果寫入 README.my 中。
-
git merge-file -L a -L b -L c tmp/a123 tmp/b234 tmp/c345
-
將 tmp/a123 和 tmp/c345 與基礎 tmp/b234 合併,但使用標籤
a
和c
而不是tmp/a123
和tmp/c345
。 -
git merge-file -p --object-id abc1234 def567 890abcd
-
合併自 def567 以來,blob abc1234 和 890abcd 的變更,嘗試合併它們,並將結果寫入標準輸出
GIT
屬於 git[1] 套件的一部分