使用Git制作和提交patch

使用Git制作和提交patch

背景概況

現(xiàn)在很多大型的開(kāi)源項(xiàng)目,如:Linux, U-Boot,都是通過(guò)patch來(lái)提交代碼的。

普通開(kāi)發(fā)者從軟件倉(cāng)庫(kù)git clone下代碼,修改代碼、制作patch,最后用E-mail發(fā)送給對(duì)應(yīng)代碼維護(hù)者就好了。

Git最初作為L(zhǎng)inux的版本控制工具,提供了透明、完整、穩(wěn)定的patch功能。

Git提供了兩種簡(jiǎn)單的patch方案。一是使用git diff生成的標(biāo)準(zhǔn)patch,二是使用git format-patch生成的Git專(zhuān)用patch。

git diff生成的標(biāo)準(zhǔn)patch

為了修改代碼,我們一般的做法是建立一個(gè)新分支:test

$ git branch
* master
$ git branch test
$ git checkout test
Switched to branch 'test'
$ git branch
  master
* test

接下來(lái)就可以開(kāi)始修改代碼,修改完成之后,制作補(bǔ)?。?/p>

$ git commit -a -m "commit message"
[test xxxx] commit message
 n file changed, n insertion(+), n deletion(-)
$ git diff master > patch
$ git checkout master
Switched to branch 'master'

在當(dāng)前目錄下產(chǎn)生補(bǔ)丁文件:patch,我們可以用git apply來(lái)應(yīng)用補(bǔ)丁。

git format-patch生成的Git專(zhuān)用patch

前面部分和上面一樣,新建分支并修改代碼。

制作patch:

$ git commit -a -m "commit message" -s
[test xxxx] commit message
 n file changed, n insertion(+), n deletion(-)
$ git format-patch -M

git commit 增加-s參數(shù)是指在commit中添加Signed-off-by信息。

這里的-M是指生成最近M次commit的patch。

我們可以用git am來(lái)應(yīng)用補(bǔ)丁。

生成的patch不僅有diff的信息,還有提交者、時(shí)間等等,還是一個(gè)E-mail文件。

提交者信息可以這樣配置:

$ git config --global user.name "Your name"
$ git config --global user.email "Your email"

git send-email發(fā)送patch

配置E-mail信息:

$ vim ~/.gitconfig

以gmail為例:

[sendemail]
        smtpencryption = tls
        smtpserver = smtp.gmail.com
        smtpuser = yourname
        smtppass = yourpassword
        smtpserverport = 587
        from = yourname@gmail.com

然后就可以發(fā)送補(bǔ)丁了:

$ git send-email --to <maintainer's email> --cc <mailing list>  <your patch>

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 前提: 生成patch:git format-patch -M master生成指定patch,0163bed3b...
    yotods閱讀 106,133評(píng)論 5 21
  • 1.設(shè)置 初次使用需要設(shè)置姓名和郵箱git config --global user.name "git用戶(hù)名"g...
    jrg陳咪咪sunny閱讀 829評(píng)論 0 1
  • 本片內(nèi)容轉(zhuǎn)自CSDN http://blog.csdn.net/ithomer/article/details/7...
    五娃兒閱讀 5,046評(píng)論 2 87
  • 【幼兒說(shuō)】原創(chuàng),轉(zhuǎn)載請(qǐng)標(biāo)出處 孩子上學(xué)本來(lái)是高興的事情,但每次假期后似乎都會(huì)遇上這樣的氛圍,孩子的情緒將蒙上異樣的...
    幼兒說(shuō)閱讀 364評(píng)論 0 0
  • 倉(cāng)皇度日。 十一月,北方連綿陰雨。 我恰好盯著雨水弄臟的球鞋。落在窗子的雨,百無(wú)聊賴(lài)地?cái)S地有聲。好像也記不起我要說(shuō)...
    還笙閱讀 285評(píng)論 0 0

友情鏈接更多精彩內(nèi)容