github常用命令(五)比較檔案差異git diff和暫存區還是本地庫比較 & 多檔案比較
阿新 • • 發佈:2020-10-20
git diff
我們在bad第三行加了modify0,新增了4 5 6 行
雖然我們只做了在ffff後面增加的操作和新增了三行 但是顯示紅色部分 ffff 行被刪掉了 但是又新增了 ffff modify0 是因為git是以行為單位進行檔案的管理,這樣的操作和直接增加行效果一樣
接下來我們把bad恢復到只有三行wwww jjjj ffff
然後做刪除第一行全部 再刪除j行但是不刪除完發現
刪除整行直接刪除該行, 刪除部分行也是先刪除本行再增加該行
接著git status 發現有 modified changes unstaged 執行add 後再diff發現
若diff想和版本庫裡面的某一個歷史版本進行比較 新增HEAD引數即可
git diff 沒有任何輸出 即沒有區別這是因為 diff 不新增任何引數直接用是和暫存區進行比較我們在執行diff之前執行了add操作,add使得暫存區同步了,因此add之後diff沒有區別但是如果在add之前diff發現還是有變化的(add之前diff 不管是和暫存區還是版本庫比較都是有區別的)
接下來我們恢復bad到初態來驗證這一點 如下圖
接下來我們驗證add之後diff 發現無變化,但是新增HEAD引數和本地庫版本比較發現還是有區別的 是因為本地庫還沒有同步,即本次操作還沒有commit提交到本地庫 執行git commit後再diff 暫存區和本地庫(新增HEAD引數## 標題)都沒變化
總結
git diff [ file ]工作區檔案和暫存區比較
git diff 本地庫中歷史版本 [ file ] 工作區檔案和本地庫歷史記錄作比較
git diff 不加檔名比較當前工作區的所有檔案
本質還是理解git工作機制 工作區 暫存區和本地庫之間的聯絡
我們在上述舉例中都是用的HEAD ,並不是說只能和HEAD版本比較 HEAD 可以換成任意版本號如 HEAD^ / 9a1d70f