git學習 五 git diff魔法

2021-09-07 18:43:54 字數 911 閱讀 2278

不同引數下git diff輸出並不相同,理解了工作區,暫存區和版本庫的關係之後就很容易理解diff了。

清除工作區中未被git管理的檔案

1 git clean -fd
檢視暫存區和head中的目錄樹

其中: 要顯示暫存區的目錄樹,可以使用git ls-files命令

1 git ls-files -s
與git ls-tree不同的是第三個字段不是檔案大小而是暫存區編號

如果想針對暫存區的目錄樹使用git ls-tree命令,

1 git wirte-tree                //

首先將暫存區的目錄樹寫入git物件庫

2 git ls-tree -l 9431f4a //

對該目錄樹執行

思考:

git ls-tree -l 後面還要接乙個引數一會兒是提交,一會兒是head。所以其實提交和head其實本質上是一回事?

還有,之前做乙個需求的時候需要進行物件的對比,發現那些內容改變了,然後討論的時候提到的git是增量儲存的,是這樣的麼?

這裡是不是說每個提交其實都有對應目錄樹,不是單獨為每個提交儲存乙個目錄樹,而是增量儲存的。

1 git diff

//工作區和暫存區比較

2 git diff head/master //

工作區和版本庫的比較

3 git diff --cached/--staged /head //

暫存區和版本的比較

git 教程 git diff功能

git命令詳解 工作區和暫存區 stage 之間的差異 git diff git diff stat 工作區和版本庫之間差異 git diff head 或者 git diff cimmit id 暫存區和版本庫之間的差異 git diff cached head 或者git diff cached...

git使用筆記2 git diff詳解

例如,比較工作區和暫存區的main.cpp檔案的差異。git diff main.cpp diff git a main.cpp b main.cpp index 57a5778.24604db 100644 a main.cpp b main.cpp 1,6 1,7 include using n...

Git 關於git diff 是和誰對比的問題

git diff cached 是暫存區 stage 和 版本庫的比較 stage或cache與雖說是暫存區,緩衝區,但commit並不是像想像那樣把這個區清空,估計只是打個同步的標誌,內容還在。git add是把工作區的更新提交到暫存區,git commit是把暫存區內容更新到倉庫。所以經過add...