git 命令 git diff 查看 Git 區域文件的具體改動


 

 

 查看 Git 區域文件的具體改動 git diff

  git status 只能讓我們知道文件在 Git 區域內的改動狀態,但如果我們想查看某個文件內具體改了什么(也可以理解為在不同 Git 區域中的差異),此時需要用 git diff 命令。

  對於 b 文件,由於是新增的文件,其只存在於工作區,且處於 Untracked 狀態,Git 認為無論是哪兩個 Git 區域之間的比對都沒有意義,得到的結果是沒有區別。

  而對於 a文件,由於已經被提交到倉庫了,處於 Git 管理中,所以這個文件同時存在於三個 Git 空間(工作區,暫存區,倉庫),我們在工作區內對其進行了文件改動,無論是比對工作區 vs 暫存區或者工作區 vs 倉庫,得到的結果應該都是 a 文件里的具體變化內容。而如果比對暫存區 vs 倉庫,得到的結果也應該是沒有區別。


git diff 用在查看文件內容變化

查看文件當前變動(工作區 vs 暫存區)git diff

 

工作區做了改動

// 改動 a.txt 文件后可看到文件的具體變化
[root@ci-node1 git_test]# echo "test">>a

看看git stauts,文件被修改了,這個文件被git倉庫管理

[root@ci-node1 git_test]# git status
On branch master
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

    modified:   a

no changes added to commit (use "git add" and/or "git commit -a")

看看文件里面改了什么 git status無法看到,使用git diff

對比工作區和暫存區

[root@ci-node1 git_test]# git diff a
diff --git a/a b/a
index e69de29..9daeafb 100644
--- a/a
+++ b/a
@@ -0,0 +1 @@
+test

暫存區和工作區的a做了哪些改動,加了test

 

 

//將 a 文件的變動暫存后,查看變化
[root@ci-node1 git_test]# git add a


[root@ci-node1 git_test]# git status
On branch master
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

    modified:   a

//對比工作區與暫存區,無變化,git diff 沒有輸出
[root@ci-node1 git_test]# git diff a

// git add 后工作區和暫存區內容一致了,對比,

 

查看文件當前變動(工作區 vs 暫存區)git diff –cached

這時候對比暫存區與本地倉庫,可以看到具體變化

//對比暫存區與本地倉庫,可以看到具體變化
[root@ci-node1 git_test]# git diff --cached a
diff --git a/a b/a
index e69de29..9daeafb 100644
--- a/a
+++ b/a
@@ -0,0 +1 @@
+test

這時候執行git commit

[root@ci-node1 git_test]# git commit -m "modify a"
[master af5856a] modify a
 1 file changed, 1 insertion(+)
// 這時候再執行git diff --cached ,沒有輸出
[root@ci-node1 git_test]# git diff --cached a

暫存區和本地倉庫一樣了

 

再做個驗證

// 工作區是干凈的,三個區域 工作區、暫存區、本地倉庫內容是一致的
[root@ci-node1 git_test]# git status
On branch master
nothing to commit, working tree clean

 

改動 a 文件后,工作區改動了,再看變化
//改動 a 文件后,工作區改動了,再看變化
[root@ci-node1 git_test]# echo "bbb">a
 
        

現在工作區和暫存區不一致的,但暫存區和本地倉庫是一致的

// 現在工作區和暫存區不一致的,但暫存區和本地倉庫是一致的
[root@ci-node1 git_test]# git diff a
diff --git a/a b/a
index 9daeafb..f761ec1 100644
--- a/a
+++ b/a
@@ -1 +1 @@
-test
+bbb

 

沒有輸出,因為暫存區和本地倉庫是一致的 
// 沒有輸出,因為暫存區和本地倉庫是一致的 
[root@ci-node1 git_test]# git diff --cached a

 

 

 總結:

git diff 比較的是 工作區和暫存區

git diff --cached 比較的是 暫存區和本地倉庫


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM