日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

生成和合入patch的两种方式

發布時間:2025/1/21 编程问答 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 生成和合入patch的两种方式 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在平時有代碼移植或合入芯片廠商或板卡商的代碼時,我們就可能要用到打補丁技術。

1. 兩種補丁方案

Git提供了兩種補丁方案,分別patch和diff。

diff

git diff 生成的是UNIX標準補丁.diff文件。只會記錄文件改變的內容,不會帶有commit記錄信息,多個commit可以合并成一個diff文件。

patch

git format-patch生成的是Git專用.patch文件。帶有記錄文件改變的內容和commit記錄信息,每個commit對應一個patch文件。

2. 生成patch文件常用命令

2.1 找到commit id

在生成補丁文件前,一般要通過git log命令找到commit id,如果下圖所示:

2.1 某一筆提交的patch

git format-patch commitID -1

例如:

git format-patch 255867fabcf79246d948fadfebe307f8a848bff4 -1

2.2 某筆提交(包含)之前的幾次提交

git format-patch commitID -n

例如:

git format-patch commitID -2

2.3 某兩筆(包后不包前)提交之間的所有提交

git format-patch commitID1..commitID2

例如:

git format-patch 1ac240c4561fab6ce400943edb38e46c792b949a..255867fabcf79246d948fadfebe307f8a848bff4

這里有兩點說明下:

1:“包后不包前”,即255867fabcf79246d948fadfebe307f8a848bff4的提交會打成patch,1ac240c4561fab6ce400943edb38e46c792b949a不會打patch

2:“前面的commitID要比后面的commitID早”,即1ac240c4561fab6ce400943edb38e46c792b949a要比后面的255867fabcf79246d948fadfebe307f8a848bff4早提交

如果執行git format-patch 255867fabcf79246d948fadfebe307f8a848bff4…1ac240c4561fab6ce400943edb38e46c792b949a則不會生成patch文件

2.4 某筆提交(不包含)以后所有提交

git format-patch commitID

例如:

git format-patch 1ac240c4561fab6ce400943edb38e46c792b949a
3. 生成diff文件常用命令

某兩筆(包前包后)提交之間的所有提交

git diff commitID1 commitID2 > patch.diff

例如:

git diff 6ad340a4ce0688afffe062c1cef529ecc549ca04 255867fabcf79246d948fadfebe307f8a848bff4 > patch.diff

將單個文件做成一個單獨的補丁

git diff testFile > patch

將工作區與版本庫的差異做成補丁

git diff --HEAD > patch

將暫存區與版本庫的差異做成補丁

git diff --cached > patch
4. 合入patch和diff文件的常用命令

檢查patch/diff是否能正常打入

git apply --check file.patch文件

或:

git apply --check file.diff文件

打入patch/diff

git apply file.patch文件

或:

git apply file.diff文件

或:

git am file.patch文件
4. 解決沖突

如果在合入patch的過程中報錯了,可以使用下面命令:

git apply --reject file.patch
  • 這個命令會自動合入不沖突的代碼,然后保留沖突的部分,同時會生成后綴為.rej的文件,用于保存沒有合并進去的部分,可以參考這個進行沖突解決。

  • 解決完沖突后,刪除后綴為.rej文件,并執行git add . 添加改動到暫存區

  • 最后執行git am --resolved或者git am --continue

  • 備注:在打入patch沖突時,可以執行git am --skip跳過此次沖突,也可以執行git am --abort回退打入patch的動作,還原到操作前狀態。

    非常感謝您的耐心閱讀,希望我的文章對您有幫助。歡迎點評、轉發或分享給您的朋友或技術群。
    與50位技術專家面對面20年技術見證,附贈技術全景圖

    總結

    以上是生活随笔為你收集整理的生成和合入patch的两种方式的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。