歡迎關(guān)注微信公眾號(hào):羽林君,或者添加作者個(gè)人微信:become_me
diff 和 patch
我們經(jīng)常會(huì)使用diff和patch兩個(gè)組合命令生成patch文件,然后進(jìn)行合入。一般使用如下:生成patch文件,patch打入
?diff?-Nur?src?src_new?>src.patch?
?
?patch?-p[n]?<?src.patch
這個(gè)比較多使用,文章也比較多,這里不多贅述。
git diff
今天描述的是git diff配合patch,下面是git diff的詳細(xì)介紹:
參數(shù) | 描述 |
---|---|
git diff | 查看尚未暫存的文件更新了哪些部分,此命令比較的是工作目錄(Working tree)和暫存區(qū)域快照(index)之間的差異。也就是修改之后還沒(méi)有暫存起來(lái)的變化內(nèi)容。 |
git diff --cached | 查看已經(jīng)暫存起來(lái)的文件(staged)和上次提交時(shí)的快照之間(HEAD)的差異。顯示的是下一次 commit 時(shí)會(huì)提交到 HEAD 的內(nèi)容(不帶 -a 情況下) |
git diff HEAD | 顯示工作版本(Working tree)和 HEAD 的差別 |
git diff filename | 查看尚未暫存的某個(gè)文件的更新 |
git diff –cached filename | 查看已經(jīng)暫存起來(lái)的某個(gè)文件和上次提交的版本之間的差異 |
git diff sha1:filename sha2:filename | 查看版本 sha1 的文件 filename 和版本 sha2 的文件 filename 的差異 |
git diff topic master | 直接將兩個(gè)分支上最新的提交做比較 |
git diff topic…master | 輸出自 topic 和 master 分別開發(fā)以來(lái),master 分支上的 changed |
git diff --stat | 查看簡(jiǎn)單的 diff 結(jié)果,可以加上 --stat 參數(shù) |
git diff test | 顯示當(dāng)前目錄和另一個(gè)叫 test 分支的差別 |
git diff HEAD – ./lib | 顯示當(dāng)前目錄下的 lib 目錄和上次提交之間的差別 |
git diff HEAD^ HEAD | 比較上次提交 commit 和上上次提交 |
git diff SHA1 SHA2 | 比較兩個(gè)歷史版本之間的差異 |
git diff 與 patch 使用實(shí)例
以下是一個(gè)暫未提交的修改,通過(guò) git status
可以查看
我們可以通過(guò) 這個(gè)git diff
,先查看對(duì)比信息
之后使用基本命令生成patch git diff > test.patch
patch命令 打補(bǔ)丁
直接打補(bǔ)丁 patch -p1 < test.patch
也可以到下層目錄,使用p2進(jìn)行打補(bǔ)丁 patch -p2 < test.patch
patch -p[n] < test.patch
其中n為層級(jí),層級(jí)的詳細(xì)解釋:
假如補(bǔ)丁頭是
>?---?src/a/b/c/d/file?????
>?+++?src_new/a/b/c/d/file
git apply 打補(bǔ)丁
除了patch命令,我們也可以使用git apply
,這里因?yàn)闆](méi)有commit信息所以不能用 git am
,使用應(yīng)用補(bǔ)丁之前我們可以先檢驗(yàn)一下補(bǔ)丁能否應(yīng)用,git apply --check patch
如果沒(méi)有任何輸出,那么表示可以順利接受這個(gè)補(bǔ)丁
git?apply?--stat?test.patch
git?apply?--check?test.patch
git apply --check 沒(méi)有提示信息,表示正常,直接進(jìn)行打入補(bǔ)丁 git apply test.patch
因?yàn)闆](méi)有提交信息 所以git am
無(wú)法使用
結(jié)語(yǔ)
這就是我自己的一些git diff打patch使用分享。如果大家有更好的想法和需求,也歡迎大家加我好友交流分享哈。
作者:良知猶存,白天努力工作,晚上原創(chuàng)公號(hào)號(hào)主。公眾號(hào)內(nèi)容除了技術(shù)還有些人生感悟,一個(gè)認(rèn)真輸出內(nèi)容的職場(chǎng)老司機(jī),也是一個(gè)技術(shù)之外豐富生活的人,攝影、音樂(lè) and 籃球。關(guān)注我,與我一起同行。