Git 学习笔记
Git 学习笔记
版本控制
学习git之前,需要先明白版本控制。
版本控制 是一种管理文件(尤其是代码文件)变更的系统,它记录了文件的历史变动,并允许多个开发者或团队协作开发项目。通过版本控制,开发者可以追踪文件的每个修改、比较不同版本的变化、恢复历史版本,以及解决多人并发修改时的冲突。
版本控制分类
- 本地版本控制

- 集中版本控制 SVN

- 分布式版本控制 Git

SVN 与 Git 的主要区别
SVN 是集中式版本控制系统,版本库都是集中放在中央服务器的,开发者从中央仓库检出(checkout)文件到本地,并在本地进行修改,修改完成后,开发者需要将更改提交(commit)回中央仓库。集中式版本控制系统是必须联网才能工作,对网络带宽要求较高。
在 Git 中,每个开发者的机器上都有项目的完整副本,包括版本历史。开发者在本地进行提交(commit),本地仓库记录所有的变动。开发者可以在没有网络连接的情况下工作,当有网络时,将本地的更改推送(push)到远程仓库,或者拉取(pull)远程仓库的更新。
Git 环境配置
查看配置
1 | git config -l |
查看不同级别的配置文件
1 | # 查看系统config |
设置用户名与邮箱
- 设置全局用户名和电子邮件
使用以下命令设置全局的 Git 用户名和电子邮件,这些设置将适用于你计算机上的所有 Git 仓库。
1 | git config --global user.name "用户名" |
–global:表示该配置是全局配置,适用于你计算机上的所有 Git 仓库。你也可以选择仅在某个仓库中设置用户名和电子邮件(见下面的本地配置)。
- 设置本地用户名和电子邮件(针对单个仓库)
如果你希望为某个特定的 Git 仓库设置不同的用户名和电子邮件(例如,在工作和个人项目中使用不同的身份),你可以在该仓库中设置本地用户名和电子邮件:
1 | cd /path/to/your/repo |
这些设置只会影响当前仓库,不会影响全局设置。
Git 基本理论
工作区域
Git 本地有三个工作区域:工作目录(Workding Directory)、暂存区(Stage/Index)、资源库(Repository)。如果再加上远程的 Git 仓库(Remote Directory)就可以分为四个工作区域,其转换关系如下:

- 工作区:就是平时存放项目代码的地方
- 暂存区:用于临时存放你的改动,事实上它只是一个文件,保存即将提交的文件列表信息
- 仓库区:就是安全存放数据的位置,这里面有你提交的所有版本的数据。其中 HEAD 文件指向最新放入仓库的版本
- 远程仓库:托管代码的服务器,例如github、gitee等
工作流程
git 等工作流程一般是这样的:
- 在工作目录中添加、修改文件;
- 将需要进行版本管理的文件放入暂存区域;
- 将暂存区域的文件提交到 git 仓库。
因此,git管理的文件有三种状态:已修改(modified)、已暂存(staged)、已提交(commited)
Git 项目搭建
创建工作目录与常用指令
工作目录一般就是你希望git帮助管理的文件夹,可以是项目的目录,也可以是一个空目录,建议不要有中文。
日常使用只需要记住以下6个命令:
本地仓库搭建
创建本地仓库的方法有两种:一种是创建全新的仓库,另一种是克隆远程仓库。
- 创建全新的仓库,需要在git管理的项目的根目录执行:
1 | # 在当前目录新建一个git代码库 |
执行后可以看到仅在项目目录中多出一个 .git
目录(默认是隐藏的),关于版本等所有信息都在这个目录里面。
- 克隆远程仓库到本地
1 | # 克隆一个项目和它的整个代码历史(版本信息) |
Git 文件操作
查看文件状态
1 | # 查看指定文件状态 |
忽略文件
有些时候我们不想把某些文件纳入版本控制中,比如数据库文件、临时文件、设计文件等等。
在主目录下建立 .gitignore
文件,此文件有如下规则:
- 文件中的空行或者以
#
号开始的行将会被忽略。 - 可以使用 Linux 通配符。例如:
*
代表任意多个字符,?
代表一个字符,[abc]
代表可选字符范围,{string1, string2}
代表可选的字符串等。 - 如果名称最前面有一个感叹号
!
,表示例外规则,将不被忽略。
例如:
1 | # 表示注释 |
使用 Github
- 注册 github,完善个人信息
- 设置本机绑定SSH公钥,实现免密码登陆
- 将公钥信息添加到 github 账号上
- 在 github 上新建仓库,本地
git remote add <name> <url>
,其中是远程仓库的名称,通常使用 origin 作为默认名称, 是远程仓库的地址(可以是 HTTPS 或 SSH 地址) - 本地 git push 即可把本地仓库推送到远程仓库
Git 分支
git 分支中的常用指令:
1 | # 列出所有本地分支 |
分支的主要意义在于将项目划分成多条线:
master 主分支应该非常稳定,用来发布新版本,一般情况下不允许在上面工作,工作一般情况会在新建的 dev 分支上工作。工作完成后/ dev 分支稳定后可以合并到主分支 master 上,保证主线的稳定性。