補(bǔ)丁是一個(gè)文本文件,其內(nèi)容類(lèi)似于git diff,但與代碼一樣,它也有關(guān)于提交的元數(shù)據(jù); 例如提交ID,日期,提交消息等。我們可以從提交創(chuàng)建一個(gè)補(bǔ)丁,而其他人可以將它們應(yīng)用到他們的存儲(chǔ)庫(kù)。
假設(shè)我們?cè)陧?xiàng)目實(shí)現(xiàn)了一個(gè)strcat函數(shù)。并將編寫(xiě)的代碼的路徑并發(fā)送給其他開(kāi)發(fā)人員。 然后,其他開(kāi)發(fā)人員可以將接收的補(bǔ)丁應(yīng)用到自己的代碼中。
我們使用git format-patch命令創(chuàng)建最新提交的修補(bǔ)程序。 如果要為特定提交創(chuàng)建修補(bǔ)程序,請(qǐng)?jiān)趂ormat-patch命令后面指定 COMMIT_ID 。
$ pwd
/D/worksp/sample
Administrator@MY-PC /D/worksp/sample (master)
$ git status
On branch master
Your branch is up-to-date with 'origin/master'.
Changes not staged for commit:
(use "git add ..." to update what will be committed)
(use "git checkout -- ..." to discard changes in working directory)
modified: src/string.py
no changes added to commit (use "git add" and/or "git commit -a")
Administrator@MY-PC /D/worksp/sample (master)
$ git add src/string.py
Administrator@MY-PC /D/worksp/sample (master)
$ git commit -m "Added my_strcat function"
[master cea49f4] Added my_strcat function
1 file changed, 4 insertions(+), 1 deletion(-)
Administrator@MY-PC /D/worksp/sample (master)
$ git format-patch -1
0001-Added-my_strcat-function.patch
上述命令在當(dāng)前工作目錄中創(chuàng)建.patch文件。 其他開(kāi)發(fā)人員可以使用這個(gè)補(bǔ)丁來(lái)修改他的文件。 Git分別提供兩個(gè)命令:git am 和 git apply 來(lái)應(yīng)用補(bǔ)丁。 git apply修改本地文件而不創(chuàng)建提交,而git am會(huì)修改文件并創(chuàng)建提交。
要應(yīng)用補(bǔ)丁并創(chuàng)建提交,請(qǐng)使用以下命令:
bjpowernode@ubuntu:~/git/sample$ pwd
/home/bjpowernode/git/sample/src
bjpowernode@ubuntu:~/git/sample$ git diff
bjpowernode@ubuntu:~/git/sample$ git status –s
bjpowernode@ubuntu:~/git/sample$ git apply 0001-Added-my_strcat-function.patch
bjpowernode@ubuntu:~/git/sample$ git status -s
修補(bǔ)程序成功應(yīng)用,現(xiàn)在我們可以使用git diff命令查看修改。
$ git diff
diff --git a/src/string.py b/src/string.py
index ab42b94..18f165f 100644
--- a/src/string.py
+++ b/src/string.py
@@ -6,4 +6,5 @@ var2 = "Python Programming"
print ("var1[0]: ", var1[0])
print ("var2[1:5]: ", var2[1:5]) # 切片 加索引
-
+def my_strcat(str1, str2):
+ return (str1+str2)