Git本地庫中的索引(Index)及檔案狀態概述
阿新 • • 發佈:2019-01-29
Git本地庫中的索引Index就是一個二進位制檔案,預設儲存在.git/index路徑下。
git update-index --chmod=+x myFile
1.索引
索引中包含一個列表,列表根據檔名、檔案模式和檔案元資料進行了排序,以便快速檢測檔案的變化。
索引中還包含所有Blob型別的SHA-1識別符號。
2.Git檔案狀態
對於新建立的一個檔案,其狀態為untracked。
通過git add ...命令,可以將該新建檔案的狀態轉換為staged,這個過程就是將新建檔案加入到Index中。
通過git commit命令,可以將處於staged狀態的檔案提交到本地庫的HEAD。
3.git checkout-index命令
將Index中列表的檔案檢出到工作目錄,預設不覆蓋已有檔案。
- -u, --index,更新所有檢出的檔案的stat資訊(git status)
- -a, --all,檢出Index中列表的所有檔案
- -f, --force,檢出時覆蓋已有檔案
- -n, --no-create,只再次檢出工作目錄中已有的檔案(不建立任何新檔案)
- --,禁用任何引數
- 從Index檢出已有檔案的最新版本,並覆蓋
- 檢出全部檔案到git-export-dir目錄
- 檢出檔案Makefile,並重命名為.merged-Makefile
git checkout-index --prefix=.merged- Makefile
4.git update-index命令
將工作目錄中的檔案加入到index列表中。
不建議使用該命令,同樣情況下推薦使用git add
如下命令完全等價:
- 為myFile檔案設定可執行許可權
git update-index --chmod=+x myFile
- 為myFile檔案撤銷可執行許可權
git add --chmod=-x myFilegit update-index --chmod=-x myFile
5.git merge-index命令
為Index中需要合併的檔案執行合併操作。
基本用法:
git merge-index [-o] [-q] <merge-program> (-a | [--] <file>*)
示例:
git merge-index cat a_script_file
6.git diff-index命令
該命令比較複雜,我們稍後將詳述。