Git用来干什么?
Git是一个版本管理工具,几乎所有的现代开发中都使用了Git进行版本管理。它可以更好的记录每次代码的变动,也可以非常方便的回退到以前的某个版本,又或者将多个不同的版本合并到一起得到一个统一的版本,是针对开发管理、团队协作等场景非常强大且趁手的工具
Git使用前的配置
在使用Git时,需要进行一些配置,比如最基本的用户信息,当你提交代码的时候,总得知道是谁提交的
Git的配置分为三级:系统级、用户级、本地仓库级,范围越小的优先级越高,一般情况下只用到用户级和本地仓库级,很少会用到系统级
Git使用了git config
工具进行读写配置,下面是一个配置用户信息的示例,安装好Git的第一步就是配置用户信息
# 配置Git用户信息的用户名
git config --global user.name "用户名"
# 配置Git用户信息的邮箱地址
git config --global user.email "邮箱地址"
用户名和邮件地址很重要,因为每一个 Git 提交都会使用这些信息,它们会写入到你的每一次提交中,且不可更改
这里使用了--global
选项,它指定了配置写入到用户级,只要使用的是这个用户,那么提交时都将使用该用户信息(没有配置本地仓库级用户信息),通常情况下一个系统用户提交时使用的用户信息都是相同的,该选项可以避免每个仓库都重复配置相同的信息
上面提到Git配置分为三级,--global
配置用户级,如果要配置系统级,使用--system
;如果要配置本地仓库级,使用--local
,配置本地仓库级时,必须进入到对应的本地仓库中才行,另外,git config 的默认级别也是本地仓库级,因此进行本地仓库级配置时也可以不加--local
选项
初始化仓库
配置好基本的用户信息后,就是初始化Git仓库,初始化Git仓库有两种方式:1、使用git init
指令在当前目录下初始化仓库(前提是当前目录不是Git仓库,也不是Git仓库中的子目录);2、使用git clone
克隆现有仓库,克隆现有仓库的命令是git clone <url>
,克隆现有仓库时,还可以在url后面指定目录名字,而不是默认的名字:git clone https://github.com/libgit2/libgit2 mylibgit
,如果不指定最后的mylibgit
,克隆的仓库会放在名为libgit2
目录下,而当前命令会将克隆的仓库放在mylibgit
目录下
Git中的工作区、暂存区和版本库
工作区:在文件系统中,看到的目录、文件都是工作区的内容,也就是说文件系统中内容就是工作区的内容
版本库:版本库在存放于文件系统中的.git
隐藏目录,通常情况下,不建议手动去操作这个目录中的任何内容,版本库记录了该Git仓库中所有的提交记录、历史信息、变更信息等等一切信息
暂存区:暂存区顾名思义,它是工作区和版本库的中间缓冲,工作区的内容发生了变更,需要先提交到暂存区,再从暂存区提交到版本库,这样设计是为了精细化控制,比如说工作区提交
提交
Git工作区中的文件有两种状态:已跟踪或未跟踪。已跟踪的文件是指那些被纳入了版本控制的文件,在上一次快照中有它们的记录,在工作一段时间后, 它们的状态可能是未修改,已修改或已放入暂存区。简而言之,已跟踪的文件就是 Git 已经知道的文件。工作目录中除已跟踪文件外的其它所有文件都属于未跟踪文件,它们既不存在于上次快照的记录中,也没有被放入暂存区。
推送
基本的 Git 工作流程如下:
在工作区中修改文件。
将你想要下次提交的更改选择性地暂存,这样只会将更改的部分添加到暂存区。
提交更新,找到暂存区的文件,将快照永久性存储到 Git 目录。
Git项目拥有三个阶段:工作区、暂存区、Git目录
Git中的文件有三种状态:已提交、已修改、已暂存