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命令
该命令比较复杂,我们稍后将详述。