目錄
一、背景&目標(biāo)
二、git三個區(qū)了解
三、git diff 6種場景介紹
3.1 工作區(qū)和暫存區(qū)差異對比
3.2?工作區(qū)和版本庫之間差異
3.3 暫存區(qū)和版本庫之間差異對比
3.4 本地版本庫之間提交記錄對比
3.5 不同分支對比
3.6 不同分支下同一文件對比
?四、git diff 中@@ -x1,y1?+x2,y2 表示的意思
4.1 demo
4.2 具體解釋
一、背景&目標(biāo)
在之前公司中大家合并代碼都是自己解決沖突,然后提交一個MR,具體負(fù)責(zé)人只是進(jìn)行簡單的代碼查看和MR,所以并沒了解過git其他命令,因?yàn)橛貌坏?。但是最近小伙伴們一個需求少的會創(chuàng)景3-4個分支,多的有7-8個分支,上線時自己合并代碼是一件比較“艱難”的事情,所以我們需要git的diff 命令來查看具體區(qū)別,但是diff 有多種使用場景下面我們來了解一下;
二、git三個區(qū)了解
因?yàn)閐iff的介紹是離不開這三個區(qū),所以優(yōu)先了解一下這三個區(qū);
Git中的劃分為工作區(qū)(Working Directory),暫存區(qū)(Index,也就是Stage區(qū)),版本庫(也就是每次提交commit以后的版本)?
工作區(qū)、暫存區(qū)、本地版本庫三個區(qū)具體講解見文章:git 工作區(qū)、暫存區(qū)、版本庫三個區(qū)域介紹
三、git diff 6種場景介紹
3.1 工作區(qū)和暫存區(qū)差異對比
3.1.1?工作區(qū)和暫存區(qū)之間的差異
git diff? --stat
這個命令展示工作區(qū)和暫存區(qū)之間有區(qū)別的文件,以及該文件中有多少區(qū)別;
?從這里可以看到工作區(qū)和暫存區(qū)之間有2個文件被修改過,每個文件中有1處改動;
3.1.2?工作區(qū)和暫存區(qū)之間的詳細(xì)差異
git diff
這個命令顯示的是詳細(xì)的差異,比如是哪個文件中的哪行有變化;?
相比上面對比情況來看,工作區(qū)和暫存區(qū)(index 2e6f7ce...)中文件有區(qū)別,具體去區(qū)別會在下面展示??瓷厦?、2、3 發(fā)現(xiàn)1說明了工作區(qū)和暫存區(qū)中哪個記錄有區(qū)別,2中列出了具體文件,3中展示具體文件中具體區(qū)別;
3.2?工作區(qū)和版本庫之間差異
3.2.1 工作區(qū)和版本庫之間差異
git diff HEAD --stat
git diff commit_id --stat
這個命令展示工作區(qū)和版本庫之間有區(qū)別的文件,以及該文件中有多少區(qū)別;
可以看到這里是有2個文件被修改了,每個文件中只修改了1處;
3.2.2??工作區(qū)和版本庫之間詳細(xì)差異
git diff HEAD
git diff commit_id
?和之前工作區(qū)和暫存區(qū)一樣,詳細(xì)展示了具體差異;
3.3 暫存區(qū)和版本庫之間差異對比
如果需要比較暫存區(qū)和版本庫之間的差異,需要添加–cahced ,其他的指令類似,包括–stat;
git diff --cached HEAD --stat
git diff --cached commit_id --stat
暫存區(qū)和本地版本庫之間差異,因?yàn)樵诒镜匦薷暮鬀]有執(zhí)行g(shù)it add . 所以目前修改的東西都在工作區(qū),所以暫存區(qū)和本地版本庫是一致的;
git diff --cached HEAD
git diff --cached commit_id
3.4 本地版本庫之間提交記錄對比
3.4.1 本地版本庫之間提交記錄整體對比
git diff e8f4da5267e 2a010f1ff6 --stat
查看本地版本庫之間的差異,具體執(zhí)行如下:
展示兩個commit 之間有1個文件被修改了,改動有4行;
3.4.2 本地版本庫之間提交記錄詳細(xì)對比
git diff e8f4da5267e 2a010f1ff6
展示具體文件之間的區(qū)別
?從執(zhí)行結(jié)果看到老文件的從199行開始有10行代碼變動,而新文件中從199行開始有6行變動;
3.5 不同分支對比
3.5.1 兩個分支整體對比
git diff branch1 branch2 --stat
?可以看到branch1和branc2兩個分支有20個文件被改動,新增191行,刪除64行;
3.5.2 兩個分支詳細(xì)對比
git diff branch1 branch2
?和其他對比是一樣的,詳細(xì)展示兩個分支之間具體文件中的不同;
3.6 不同分支下同一文件對比
上面兩種是來看分支之間不同的,但是沒法對比兩個分支中同一個文件具體有哪些區(qū)別,可以使用下面命令來對比;
說明:如果是代碼 則分支后面不用加“--” 就能對比,但是配置文件不行,所以如果查看配置文件的區(qū)別還是要添加“--”的;
git diff master_12 release_12 -- src/main/resources/bootstrap-dev.yml
不同分支,同一個文件對比如下:
?從上面文件看,這個文件是新建的,之前老文件沒有,新文件中有影響的32行;
四、git diff 中@@ -x1,y1?+x2,y2 表示的意思
其實(shí)從上面我們也可以看到,只要是明細(xì)對比總會有@@-x1,y1 +x2,y2這樣的值,那這些值代表什么那,如果明白這些會對我們有很大幫助,下面來看看具體代表含義;
4.1 demo
4.2 具體解釋
@@后面的兩個數(shù)字:“-19,7”,表示a文件中第19行開始的后面7行,“+19,6”表示以下數(shù)據(jù)是b文件中第19行開始后的后面6行。其中“-”表示a文件,“+”表示b文件。下一行用“-”號開頭的表示a文件變成b文件的時候,這一行被刪除。用“+”開頭的則表示a文件變成b文件的時候,這一行被加入。沒有正負(fù)號開頭的部分則表示沒有進(jìn)行修改。文章來源:http://www.zghlxwxcb.cn/news/detail-756569.html
OK到這里git中diff命令的使用場景介紹結(jié)束了,大家有問題的可以在評論區(qū)留言或私信我哦!文章來源地址http://www.zghlxwxcb.cn/news/detail-756569.html
到了這里,關(guān)于git diff 命令6種使用場景的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!