本文简单介绍一下git patch
。
首先创建包含git
的工作目录:
git init git_repo
接着在这个文件夹下创建一个文本文件(a.txt
):
aaaa
bbbb
cccc
dddd
eeee
ffff
把这个文件加到git
版本控制:
git add a.txt
git commit -m "Initialize a.txt"
接着再开出一个patch
分支,剩下的操作都在这个分支上进行:
git checkout -b patch
然后把a.txt
文件第二行的bbbb
改成bb11
:
aaaa
bb11
cccc
dddd
eeee
ffff
提交:
git commit -a -m "Modify a.txt"
接下来生成相对于master
分支的patch
:
[root@localhost git_repo]# git format-patch master
0001-Modify-a.txt.patch
看一下0001-Modify-a.txt.patch
这个patch
文件:
From 9512ec20468586e0632ece9e97e4e89b3a68c40e Mon Sep 17 00:00:00 2001
From: root <root@localhost.localdomain>
Date: Thu, 30 Jul 2015 02:30:45 -0400
Subject: [PATCH 1/3] Modify a.txt
---
a.txt | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/a.txt b/a.txt
index 1707b56..1ba3da1 100644
--- a/a.txt
+++ b/a.txt
@@ -1,5 +1,5 @@
aaaa
-bbbb
+bb11
cccc
dddd
eeee
--
2.4.3
重点看一下@@ -1,5 +1,5 @@
:-1,5
表示原来的文件,+1,5
表示修改后的文件。1
表示起始行号,5
表示从起始行号算起,一共包含多少行。下面的-bbbb
表示删除原来文件的内容,而+bb11
表示修改后文件的内容。
下面切换回master
分支:
[root@localhost git_repo]# git checkout master
Switched to branch 'master'
看一下master
分支的a.txt
:
[root@localhost git_repo]# cat a.txt
aaaa
bbbb
cccc
dddd
eeee
ffff
没有任何变化。
接下来merge patch
:
[root@localhost git_repo]# git am < 0001-Modify-a.txt.patch
Applying: Modify a.txt
再次查看a.txt
:
[root@localhost git_repo]# cat a.txt
aaaa
bb11
cccc
dddd
eeee
ffff
可以看到patch
已经成功地merge
进了a.txt
。