有一天,当我像往常同样打开SourceTree提交代码,而后推送的时候,我忽然意识到我只是根据肌肉记忆完成这个过程,我压根不知道这其中到底发生了什么。这是个很严重的问题,做为一个技术人员,竟然只知足于使用工具,而对工具的原理毫无探索,因而我进行了很深入的反思。git
我以为一个好知的人不仅是要知其然,更要知其因此然,因此我会认真的学习Git,并探索Git的背后原理。vim
注: 如下操做都是在OS X系统下进行的,我强烈建议动手实践,去折腾,去探索bash
我相信这是全部人的第一步,配置本身的名称和邮箱:编辑器
$ 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 // 删除当前用户用户名
复制代码
一台电脑会有多个用户,若是这几个用户是不一样的人,那他们的名字和邮箱确定是不一样的,因此每一个用户都须要定制本身的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会使用系统默认文本编辑器
复制代码