1、檢視提交(commit)日誌:git log
看到每次提交的檔案變更統計: --stat git log --stat
精簡輸出日誌:--pretty=oneline git log --pretty=oneline
2、檢視檔案狀態: git status
精簡格式的狀態輸出:-s git status -s
3、git diff
不帶任何選項和引數:顯示工作區的最新改動(即工作區與提交任務(暫存區,stage)相比的差異)
工作區和head(當前工作分支):git diff head
提交暫存區和版本庫:git diff --cached
4、撤銷工作區中測未提交的修改:git checkout -- git checkout -- welcome.txt
5、git status (git diff)掃瞄工作區改動的時候。
git判斷檔案有沒有改變:先比較檔案的時間戳、檔案大小,再比較檔案內容。
先依據.git/index檔案中記錄的(用於跟蹤工作區檔案的)時間戳、長度等資訊判斷工作區檔案是否改變,如果工作區檔案的時間戳改變了,說明檔案的內容可能被改變了,
需要開啟檔案,讀取檔案內容,與更改這前的原始檔案相比較,判斷檔案內容是否被更改。如果檔案內容沒有更改,則將該檔案新的時間戳記錄到.git/index檔案中。
.git/index 虛擬工作區的目錄樹(檔名和檔案狀態資訊)
.git/objects 檔案內容
檔案索引:建立了檔案和物件庫中物件實體之間的對應
6、工作區、暫存區、版本庫目錄相對瀏覽:
版本庫目錄權:
git ls-tree -l head
顯示檔案的大小:-l
100644 blob a11790e8c69269e02e04f141bc00c9f94b79b99d 10 readme.md
輸出內容:
100644):檔案的屬性(rw-r--r--)
blob :git物件庫中的乙個blob物件(檔案)
a11790e8c69269e02e04f141bc00c9f94b79b99d:檔案在物件庫中對應的id
清除工作區中沒有加入版本庫的檔案和目錄(非跟蹤檔案和目錄):git clean -fd
用暫存區內容重新整理工作區 git checkout .
暫存區目錄樹:
git ls-files -s
100644 e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 0 testthree.txt
0 暫存區編號
針對暫存區便用 git ls-tree
先把暫存區的目錄樹寫入git對像庫: git write-tree
寫入物件庫中的treeid :0f0f267c5bad5f73942a77580a6eb4af24daa425
然後 git ls-tree -l 0f0f26
040000 tree 1e4f7e68a173bb0f1e36b70d48436412f3fdac00 - a (tree樹對角,一級目錄a)
100644 blob ce013625030ba8dba906f756967f9e9ca394464a 6 testone.txt
對本地所有變更的檔案執行提交操作,包括對本地修改的檔案和刪除的檔案,但不包括未被版本庫跟蹤的檔案:git commit -a (不要使用,因為會丟掉gi暫存區帶給使用者的最大好處:對提交內容控制的能力)
暫存狀態:git stash
Git之暫存區
git index是乙個包含檔案索引的目錄樹,如同乙個虛擬的工作區,記錄檔名和檔案的狀態資訊 時間戳 檔案長度等 檔案內容則儲存在git物件庫.git objects目錄中通過檔案索引建立檔案和物件庫中物件實體之間的對應關係。執行git status或git diff命令掃瞄工作區改動時,先根據.g...
恢復git暫存區
1 右鍵開啟git bash here 2 輸入命令找到專案 cd d 碟符 xidaiw 資料夾 3 列出目錄下的檔案,輸入命令 ls la 4 查詢專案,輸入命令 cd web 8081 專案名 5 查詢暫存區列表,輸入命令 git stash list 6 恢復最近的乙個,輸入命令 git s...
Git學習 暫存區
下面需要學習兩個基本概念 工作區 暫存區 其中,工作區指的是資料夾目錄下所能看到的區域 暫存區指的是一塊快取區,通過下面的命令首先是將檔案都新增到暫存區當中 git add 檔案接著使用下面的命令,將暫存區中的內容新增到版本倉庫當中 git commit m comment 是中需要銘記的是,add...