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