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