git 打補丁方法 patch diff

2022-09-19 06:48:08 字數 1586 閱讀 9628

(14條訊息) (四十) git 打補丁方法總結_jt的專欄-csdn部落格_git 打補丁

git am 0001-added-the-custom-font-manager.patch --whitespace=nowarn/fix

1. 應用場景

有兩個git庫(同乙個git庫不同分支可以用cherry-pick),兩個git庫**是相關聯的,要有選擇的定期將其中乙個git庫的修改merge到另外乙個庫中。

2.方法

準備工作:初始化兩個git倉庫,建立乙個original.txt檔案,內部寫有「this is original text」,然後複製到第乙個倉庫和第二個倉庫。修改第乙個倉庫中的original.txt檔案,新增一行「this is modify」,修改分別提交。

git diff 前乙個提交 目標提交 > 1.patch

應用patch

可以看到patch已經打上去了,但是修改資訊啥的還得自己來寫一下,不是很完美。

2.2 git format-patch+ git am 單個patch

1. 使用git format-patch生成補丁

(git format-patch -1 commitid是提取單個commitid對應的patch)

2.使用git am 應用補丁

(一般建議git am應用補丁前使用git am --abort)

可以發現這種打補丁方式會將提交資訊直接都打進去,非常方便。

2.3 git format-patch+ git am 多個patch

1.生成多個patch(git format-patch commitid會生成這個commit之後的所有patch,不包含該commit)

2. 打補丁(git am *.patch可以打進去所有patch)

有衝突的話解決衝突,然後git add對應檔案,git am --resolve。不能解決想後面再說就git am --skip,具體使用方法參考git am --help

ps:1 使用git format-patch生成所需要的patch:

當前分支所有超前master的提交:

git format-patch -m master

某次提交以後的所有patch:

git format-patch 4e16 --4e16指的是commit名

從根到指定提交的所有patch:

git format-patch --root 4e16

某兩次提交之間的所有patch:

git format-patch 365a..4e16 --365a和4e16分別對應兩次提交的名稱

某次提交(含)之前的幾次提交:

git format-patch –n 07fe --n指patch數,07fe對應提交的名稱

故,單次提交即為:

git format-patch -1 07fe

git format-patch生成的補丁檔案預設從1開始順序編號,並使用對應提交資訊中的第一行作為檔名。如果使用了-- numbered-files選項,則檔名只有編號,不包含提交資訊;如果指定了--stdout選項,可指定輸出位置,如當所有patch輸出到乙個檔案;可指定-o 指定patch的存放目錄;

git如何打補丁?

git cherry pick 可以把某個分支的某幾次提交合入到當前分支,只是在一台裝置上操作。git format patch 可以把某個分支的n次提交分別打成n個補丁,然後把這些補丁檔案 比如0001 patch 發給其他人,或者發到其他機器,他們在自己的機器上,把這些補丁合入到他們當前的 中。...

git用法 打補丁

1.git cherry pick 作用 從乙個branch上選擇乙個commit,新增該commit到另乙個branch上。1.切換到你想新增commit的分支上。git checkout master2.執行下面的 git cherry pick2.git rebase 作用 git rebas...

linux打補丁和git打patch方法

目錄 產生補丁?1 diff unfrom fileto file to file.patch 打補丁 1patch p0 to file.patch 取消補丁 1patch re p0 to file.patch 產生補丁 1diff unrfrom docu to docu to docu.pa...