一、Git是什么
Git是当前最先进、最主流的分布式版本控制系统,免费、开源!核心能力就是版本控制。再具体一点,就是面向代码文件的版本控制,代码的任何修改历史都会被记录管理起来,意味着可以恢复到到以前的任意时刻状态。
主要特点
- 开源免费,使用广泛
- 强大的文档(代码)的历史版本管理,直接记录完整快照(完整内容,而非差异),支持回滚、对比
- 分布式多人协作的的代码协同开发,几乎所有操作都是本地执行的,支持代码合并、代码同步
- 简单易用的分支管理,支持高效的创建分支、合并分支
二、概念汇总
工作区(Workspace) | 就是在电脑里能看到的代码库目录,是我们搬砖的地方,新增、修改的文件会提交到暂存区 |
暂存区(stage 或 index) | 用于临时存放文件的修改,实际上它只是一个文件(.git/index ),保存待提交的文件列表信息。 |
版本库/仓库(Repository) | Git的管理仓库,管理版本的数据库,记录文件/目录状态的地方,所有内容的修改记录(版本)都在这里。 |
服务端/远程仓库(origin 或 remote) | 服务端的版本库,专用的Git服务器,为多人共享提供服务,承担中心服务器的角色。本地版本库通过push指令把代码推送到服务端版本库。 |
本地仓库 | 用户机器上直接使用的的的版本库 |
分支(Branch) | 分支是从主线分离出去的“副本”,可以独立操作而互不干扰,仓库初始化就有一个默认主分支master 。 |
头(HEAD) | HEAD类似一个“指针”,指向当前活动 分支 的 最新版本。 |
提交(Commit) | 把暂存区的所有变更的内容提交到当前仓库的活动分支。 |
推送(Push) | 将本地仓库的版本推送到服务端(远程)仓库,与他人共享。 |
拉取(Pull) | 从服务端(远程)仓库获取更新到本地仓库,获取他人共享的更新。 |
获取(Fetch) | 从服务端(远程)仓库更新,作用同拉取(Pull),区别是不会自动合并。 |
冲突(Conflict) | 多人对同一文件的工作副本进行更改,并将这些更改合并到仓库时就会面临冲突,需要人工合并处理。 |
合并(Merge) | 对有冲突的文件进行合并操作,Git会自动合并变更内容,无法自动处理的冲突内容会提示人工处理。 |
标签(Tags) | 标签指的是某个分支某个特定时间点的状态,可以理解为提交记录的别名,常用来标记版本。 |
master(或main) | 仓库的“master ”分支,默认的主分支,初始化仓库就有了。Github 上创建的仓库默认名字为“main ” |
origin/master | 表示远程仓库(origin )的“master ”分支 |
origin/HEAD | 表示远程仓库(origin )的最新提交的位置,一般情况于“origin/master ” |
三、基本操作
1 | git config --global user.name "name" # 设置用户名 |
四、配置文件
Git有三个主要的配置文件:三个配置文件的优先级是① < ② < ③
- ① 系统全局配置(–system):包含了适用于系统所有用户和所有仓库(项目)的配置信息,存放在Git安装目录下
C:\Program Files\Git\etc\gitconfig
。 - ② 用户全局配置(–global):当前系统用户的全局配置,存放用户目录:
C:\Users\[系统用户名]\.gitconfig
。 - ③ 仓库/项目配置(–local):仓库(项目)的特定配置,存放在项目目录下
.git/config
1 | # 查看git配置 |
gitignore 文件示例
1 | *.txt # 忽略所有“.txt”结尾的文件 |