Git本地库中的索引(Index)及文件状态概述

Git本地库中的索引Index就是一个二进制文件,默认存储在.git/index路径下。

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 checkout-index -n -f

  • 检出全部文件到git-export-dir目录
git checkout-index -a --prefix=git-export-dir/

  • 检出文件Makefile,并重命名为.merged-Makefile

git checkout-index --prefix=.merged- Makefile


4.git update-index命令
将工作目录中的文件加入到index列表中。
不建议使用该命令,同样情况下推荐使用git add

如下命令完全等价:

  • 为myFile文件设置可执行权限

git add --chmod=+x 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命令

该命令比较复杂,我们稍后将详述。


已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页