git專案之間的commit同步

艾路發表於2024-10-18

  有兩個類似的專案,他們基於一套程式碼fork出來的,當一個專案改動了時,另一個專案想同步之前專案時,我們用補丁的方式來解決。

  首先,在被複制的專案中執行,git format-patch Acommit..Bcommit ,這個會生成 A提交(不包含)到 B提交之間所有的提交 commit補丁,每一次的提交會生成一個.patch檔案。當你有很多次commit時,會生成很多的.patch檔案,我們將他放在/Desktop下,接下來用到。

  接下來,我們在需要同步的專案下執行,有一個可以批次同步修改的命令方法,git am /Desktop/*.patch 只是因為我的衝突比較多,合併的commit不多,我一般會先檢查是否有衝突,然後再合併,我會先執行。 git apply --check /Desktop/0001-fix.patch 沒有衝突的話,無事發生,我們直接執行git am /Desktop/0001-fix.patch 。

  有衝突的情況下,我會在.patch檔案中找到衝突的提示報錯,有些可能是專案刪除檔案,或者找不到之前的檔案。我會將對應的--diff和修改資訊刪除掉,再次執行apply --check.沒有異常,然後再執行am操作。

  

相關文章