Git diff 命令

git diff命令解析

diff裏面a表示前面那個變量,b表示第二個變量

HEAD     commit版本
Index     staged版本

(-)創建演示目錄test_git,添加文件a.txt

mkdir test_git
git init
touch a.txt
git add a.txt
git commit  a.txt -m '首次提交'
git push

a、查看尚未暫存的文件更新了哪些部分,不加參數直接輸入

    git diff 

此命令比較的是工作目錄(Working tree)和暫存區域快照(index)之間的差異
也就是修改之後還沒有暫存起來的變化內容

echo "i am a file" > a.txt
git diff a.txt

這裏寫圖片描述

結果如圖,我剛纔修改的a.txt文件的區別被顯示出來,但是注意這是和Index(暫存區)做的比較。先附上git暫存區的概念圖:
這裏寫圖片描述


b、查看已經暫存起來的文件(staged)和上次提交時的快照之間(HEAD)的差異

    git diff --cached
    git diff --staged

1)給a.txt文件添加一行,然後添加到暫存區

root@iZ28npoowsjZ:~/test_git# echo "3.i fuck this file">>a.txt
root@iZ28npoowsjZ:~/test_git# git add a.txt 
root@iZ28npoowsjZ:~/test_git# git diff --staged 

這裏寫圖片描述

顯示的是下一次commit時提交到HEAD的內容(不帶-a情況下),這裏我有一個誤區,總以爲add命令只是第一次添加文件的時候纔會使用,其實git add 命令可以把所有當前的修改都先保存到暫存區。

git commit 命令纔是將暫存區的命令提交到本地master。
git push 命令是把本地master的變化push到遠程master。


c、顯示工作版本(Working tree)和HEAD的差別

    git diff HEAD

這裏我算是知道了,git diff命令不加參數的時候就是用本地工作目錄下的代碼進行比較的。


d、直接將兩個分支上最新的提交做diff

    git diff topic master 或 git diff topic..master

e、輸出自topic和master分別開發以來,master分支上的changed。

   git diff topic...master

f、查看簡單的diff結果,可以加上–stat參數

git diff --stat

g、查看當前目錄和另外一個分支的差別

git diff test

顯示當前目錄和另一個叫’test’分支的差別
git diff HEAD – ./lib
顯示當前目錄下的lib目錄和上次提交之間的差別(更準確的說是在當前分支下)


h、比較上次提交commit和上上次提交

    git diff HEAD^ HEAD

i、比較兩個歷史版本之間的差異

    git diff SHA1 SHA2
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章