標籤:android merge git patch diff
Environment : Android 4.4.2 merge with Android 4.4.3(with other vendors source code)
1.確定你要merge 到 其他分支的版本,並在伺服器測獲得具體lable 對應的commit 或者 從build 對應的Repo Manifest 中找到要patch 到目標代碼的Commit ID
<?xml version="1.0" encoding="UTF-8"?><manifest> <remote fetch=".." name="aosp"/> <default remote="aosp" revision="main-4.4" sync-j="4"/> <project groups="device,flo" name="device/asus/deb" revision="76428ec8349ae0d73455fa4b248bcc7375e08243" upstream="main-4.4"/> <project groups="device,flo" name="device/asus/flo" revision="3200b077a36c68e20cafef250ff70b7d36f71409" upstream="main-4.4"/> <project groups="device,flo" name="device/asus/flo-kernel" revision="b964b854c791be15514d9c8b950531981a81365c" upstream="main-4.4"/>
以“devcie, flo” 為例: revision="76428ec8349ae0d73455fa4b248bcc7375e08243“ , 76428ec8349ae0d73455fa4b248bcc7375e08243即需要patch的最新commit ID
2. 製作patch 包
git diff --binary org_commit_id 76428ec8349ae0d73455fa4b248bcc7375e08243 > device-flo.patch 即可產生從org_commit_id 到 76428ec8349ae0d73455fa4b248bcc7375e08243 之間代碼變化的patch
3. 檢測代碼是否衝突
進入需要patch的原始碼目錄,執行 git apply --check device-flo.patch
如果有衝突將提示error , 否則未有錯誤提示 。
4. 將可以patch的內容patch到目標原始碼,並產生衝突記錄
git apply --reject devcie-flo.patch
如 A 檔案衝突,則會在A 檔案對應的目錄下產生A.rej 檔案, 開啟A.rej 檔案可以查看具體的錯誤資訊。
5. 手工Merge 衝突內容
可以藉助meld 工具將目標目錄中的原始碼與patch 的代碼進行比較。根據代碼邏輯Merge代碼。