比較 tree/folder
新建一個專案 TortoiseGitDiffTree
- 比較資料夾
步驟:
1. 在系統槽的暫存資料夾建立比較用的版本庫(一個即可),指定 gitdir 到第一個資料夾。
1. 計算每個檔案內容的 sha1 值
```
git hash-object [FILE]
```
(without `-w` => 不需產生真的 blob 物件,省時省空間)
1. 加一筆檔案記錄進暫存區 (檔案內容 sha-1 值 + 檔案路徑/名稱)
```
git update-index --add --cacheinfo 100644 [BLOB_SHA1] [RELATED_FILE_PATH_NAME]
```
(比 git add 好的是: 它不會先產生 blob,一樣,這應該會省下很多時間和空間)
1. 建 tree 物件
```
git write-tree --missing-ok
```
它會從 index 的資料結構中產出必要的 tree 物件,而它的回傳值是根目錄的 tree 物件 sha-1 值,也就要拿來比較用的 tree 物件,就像比較二個 commits 那樣。
1. 指定 gitdir 到第二個資料夾,然後重覆步驟 2 ~ 4,得到第二個根目錄 tree 物件
1. 對二個 tree 進行 git diff tree 比較
```
git diff-tree [TREE1] [TREE2]
```
- 比較檔案
Double click 後,直接把連結的實際檔案丟給 TortoiseGitMerge 去顯示差異
其它細節:
- 比較資料夾時要有進度欄
- 比較資料夾時可以暫停、繼續、停止
- 離開程式時,要清掉暫存資料。
- 參考確認 git status 的 code 如何探索資料夾和檔案。
Edited by username-removed-94717