git命令——git status、git diff


前言

當對項目做了更改時,我們通常需要知道具體改了哪些文件,哪些文件更改了沒有暫存,哪些文件改了並且已加入到暫存區等待下次commit。上述任務使用git status都可以幫我們解決。但是想要知道文件內部改了哪些地方git status就無能為力了。git status最多只告訴你改沒改,改哪了不知道。git diff可以解決這個問題。

git status

git status 命令的輸出十分詳細,但其用語有些繁瑣。 如果你使用 git status -s 命令或 git status --short 命令,你將得到一種更為緊湊的格式輸出。 運行 git status -s ,狀態報告輸出如下:

$ git status -s
 M README
MM Rakefile
A  lib/git.rb
M  lib/simplegit.rb
?? LICENSE.txt

右側M:該文件被修改了但是還沒放入暫存區

左側M:該文件被修改了且放入暫存區

MM:在工作區被修改並提交到暫存區后又在工作區中被修改了,所以在暫存區和工作區都有該文件被修改了的記錄。

A:新添加到暫存區中的文件

??:新添加的未跟蹤文件

X          Y     Meaning
-------------------------------------------------
          [MD]   not updated
M        [ MD]   updated in index
A        [ MD]   added to index
D         [ M]   deleted from index
R        [ MD]   renamed in index
C        [ MD]   copied in index
[MARC]           index and work tree matches
[ MARC]     M    work tree changed since index
[ MARC]     D    deleted in work tree
-------------------------------------------------
D           D    unmerged, both deleted
A           U    unmerged, added by us
U           D    unmerged, deleted by them
U           A    unmerged, added by them
D           U    unmerged, deleted by us
A           A    unmerged, both added
U           U    unmerged, both modified
-------------------------------------------------
?           ?    untracked
-------------------------------------------------

 

git diff

參考:Linux命令——diff

不加參數直接輸入 git diff

工作目錄里面的文件 與 staging area里面的文件做對比。既然staging area里面有這個文件,那么他一定是tracked的。

git diff 本身只顯示尚未暫存的改動,而不是自上次提交以來所做的所有改動。 假設這樣一種場景,你clone了一個項目,改了100個文件,然后git add把他們加到暫存區。然后你git diff,會什么也看不到。因為此時staging area有100個文件,但是你工作目錄並沒有再次修改那100個文件。

退一步講,你clone了一個項目,改了100個文件。這時候你如果不git add,直接git diff則是可以看到輸出的。這時候staging area里面的內容默認是上次cmooit分支的內容。

git diff --cached

Git 1.6.1 及更高版本還允許使用 git diff --staged,效果是相同的,但更好記些。

如果你把修改文件加到staging area,准備commit。在commit之前,想看看我這次提交的內容和上個commit有啥差異,可以執行這個命令。


免責聲明!

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



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