有一天,当我像往常一样打开SourceTree提交代码,然后推送的时候,我突然意识到我只是根据肌肉记忆完成这个过程,我压根不知道这其中到底发生了什么。这是个很严重的问题,作为一个技术人员,居然只满足于使用工具,而对工具的原理毫无探索,于是我进行了很深刻的反思。
我觉得一个好知的人不只是要知其然,更要知其所以然,所以我会认真的学习Git,并探索Git的背后原理。
注: 以下操作都是在OS X系统下进行的,我强烈建议动手实践,去折腾,去探索
配置信息
我相信这是所有人的第一步,配置自己的名称和邮箱:
$ git config --global user.name "iroyzhang"
$ git config --global user.email iroyzhang@icloud.com
名称有双引号,而邮箱没有,我这是根据官方文档来的,实际上有或者没有都是可以的扩展命令:
git config --global --list // 查看当前用户Git配置变量注:
1.每台计算机上只需要配置一次,程序升级时会保留配置信息,可以在任何时候再次通过运行命令来修改它们
2.每一个Git的提交都会使用这些信息,并写入到每一次提交中
复制代码
配置文件
上面配置了名字和邮箱地址,既然只需要配置一次,那说明git config肯定把配置信息保存到了某个地方,下面来找到它:
$ cd ~ // 进入当前用户目录(一般打开Terminal就是了)
$ ls -a // 文件默认是隐藏的,此命令可显示出配置文件,名称为. gitconfig
$ open -t .gitconfig // 通过文本编辑器打开,当然也可以用Vim打开
打开文件后,所有上面git config配置的信息都会在里面git config:
git config可以把配置的信息保存到配置文件里,也可以使用git config查看配置文件的内容,说明它可以读写配置文件扩展命令:
git config --gloabl user.name // 查看当前用户配置的用户名
git config --gloabl --unset user.name // 删除当前用户用户名
复制代码
--global的作用
一台电脑会有多个用户,如果这几个用户是不同的人,那他们的名字和邮箱肯定是不同的,所以每个用户都需要定制自己的Git配置环境:
先按以下输入:
$ git config
这时会显示所有git config的选项,其中有一组分类叫做Config file location,其中包含--gloabl、--system、--local--global // 使用全局的配置文件
--system // 使用系统的配置文件
--local // 使用仓库的配置文件
Config file location的意思就是配置文件的路径,也就说上面的这些选项可以让git config读写不同路径的配置文件git config --list
上面这个查看命令因为没有指定读取哪个配置文件,所以会读取多个配置文件,变量信息可能会重复扩展命令:
git help config // 查看config帮助,进入后可键入q以退出
git config --help // 同上一样效果
git config --local --list // 查看本地仓库的Git配置
git config --system --list // 查看系统的通用Git配置注:
1.--system的配置文件在根目录下,即/etc,文件名称为gitconfig
2.--local的配置文件在当前工作目录的.git目录下,文件名称为config
3.local的配置文件优先级大于global的配置文件,global的配置文件优先级大于system的配置文件
4.在仓库下,git config缺省选项时,默认使用--local,仓库的配置信息可以被任意修改
复制代码
修改文本编辑器
当把改动添加到暂存区后,执行以下命令:
git commit
这时就会显示文本编辑器指定文本编辑器为vim(mac电脑默认的是vim,不指定也行)
$ git config --global core.editor vim注:
如果没有指定文本编辑器,Git会使用系统默认文本编辑器
复制代码