Git
这个文档适用于需要快速上手 Git 的用户,本文尽可能的做到简单易懂 ❤️❤️❤️
1. 什么是 Git
Git 是目前最主流的一个版本控制器,并且是分布式版本控制系统,可以控制电脑上所有格式的文档
版本控制器:记录每次修改以及版本迭代的管理系统
-
对于文本文件,可以记录每次对这个文件的内容进行了怎样的修改
-
对于二进制文件,具体内容进行了怎样的修改,他没法管理,但可以知道文件大小等方面的变化
2. 安装
- 查看当前安装的 git 版本
git --version
- Cent OS 安装
yum install git -y
- Ubuntu 安装
apt-get install git -y
-
windows 安装
下载安装包直接安装即可,在这里下载
安装过程中除了安装路径需要修改之外,其他都用默认的即可
3. 使用
windows 系统,通常都是使用 git 的命令行客户端来进行相关操作
在任何文件资源管理器中鼠标右击,都会有 Open Git GUI here
和 Open Git Bash here
两个选项
-
Open Git GUI here
这是 Git 自带的图像化工具,俺没用过💩
-
Open Git Bash here
这是命令行客户端,建议使用命令行,下面的关于 Git 的介绍也是使用命令行客户端来进行的😎
Git 是一个分布式版本控制系统,能够做到多人多机协同开发,将代码托管在远程服务器上,各个开发者在自己的电脑上基于本地仓库代码进行开发,一个功能开发完成之后上传到远程服务器即可
3.1 远程仓库创建
目前主流的托管平台是 Gitee 和 GitHub
- Gitee:是国内公司打造的,由于正常情况下访问 GitHub 比较慢,国内用户较多
- GitHub:目前最大的开源社区
这两个的使用方式都差不多,要用哪个自己决定就好
下面以 Gitee 为例来创建仓库
填写完上述表单之后即可成功创建远程仓库
3.2 克隆远程仓库到本地
点击右上角的克隆/下载按钮,可以看到多种克隆方式的链接以及下载代码压缩包的功能
复制 HTTPS 方式的链接,在本地要存放本地仓库的地方打开 git 命令行进行克隆,执行以下命令即可进行克隆
git clone 仓库链接
如果是私有仓库,在克隆以及提交代码的时候,需要输入 git 邮箱和密码进行验证
3.3 本地开发
克隆完成之后,即可在本地仓库中进行开发,开发完成之后,要将自己的修改推送到远程服务器,需要以下三部操作
在本地修改文件之后,对于文件的修改并未添加到本地仓库中,需要进行预添加操作以及提交操作
对本地文件的修改不只是文件内容的修改,还包括文件的创建和删除
-
预添加
将本地的修改预添加到本地仓库
git add .
-
提交
git commit -m '填写本次修改文件的备注信息,这个信息请认真填写,在追溯代码的过程中很重要'
在 commit 命令执行之后才算真正意义上将本地修改添加到了本地仓库
3.4 本地修改推送至远程仓库
将代码推送至远程仓库
git push
到这里本次修改就同步到了远程仓库
可以进行多次 add 以及 commit 操作之后再进行一次 push 操作,这三个操作不是必须同时连续执行的,这样的话,虽然没有 push,单多个版本的代码已经被 Git 管理起来了
3.5 从远程仓库拉取代码到本地
在自己开发过程中,其他开发者也会推送代码,要查看到别人的代码,就需要将远程仓库的代码拉去到本地
git pull
4. 分支管理
为了更好的进行多人协同、减少代码冲突、以及对于开发过程中不同角色的不同分工,提高开发效率,通常情况下都不会让所有人直接对同一份代码进行修改,而是多分支开发。类似于软件开发会有多个不同的环境,如开发环境、测试环境、生产环境等。
让某个功能私有一个分支,在该功能完成之后,再合并到主分支上,然后删掉这个分支
-
查看当前仓库有哪些分支
git branch
HEAD 指向的分支就是工作分支,工作分支名字前面有
*
标记 -
创建分支
git branch 分支名
成功创建分支之后,当前分支也指向最近一次提交
-
切换工作分支
git checkout 分支名
git checkout -b 新分支名
可同时实现创建新分支和切换到新分支的操作 -
合并分支
在 master 分支中合并 abc 分支
git merge --no-ff -m "合并分支" 分支名
在有代码冲突的情况下,需要手动处理冲突,然后再次提交
不建议使用
git merge 分支名
这个命令,因为在分支图上面看不到合并操作,就不清楚这次提交到底是合并的提交还是普通的提交 -
删除分支
git branch -d 分支名
若在分支未被合并之前就要删除分支,则这里的
d
需要改为大写,表示强行删除 -
可视化分支及提交记录
git log --graph --abbrev-commit
5. 代码冲突
多人协同必然会有代码冲突的问题,即使使用了分支,仍然会产生冲突
5.1 单分支开发
单分支开发代码冲突会更多,因为大家都在基于远程仓库中的一份代码进行修改,每次 push 的时候大概率都会有冲突,代码出现问题的时候,影响会很大,人数多了之后,协同效率会很低
处理冲突
- 开发完毕后进行 push
- 若有冲突,无法 push,则先进行 pull
- 本地解决冲突,重新提交并 push
- 合并分支,删除开发分支
5.2 多分支开发
多分支开发,一般自己在自己所负责的功能分支进行开发,完成之后,进行以下操作
- pull,将远程的主分支代码拉取到本地,保证本地的主分支代码也是最新的
- 先将主分支的代码合并到自己的分支,若有冲突,解决冲突
- 再将自己分支的代码合并到主分支
- push
注意:第二步,主要是为了让冲突发生在自己分支,然后在自己的分支解决冲突,而不会因为冲突,对主分支的代码产生影响
6. 其他
- 如果主分支代码出现 bug,不要直接在主分支修改,避免此次修改引入其他问题,而是基于主分支创建一个用于修复该 bug 的分支(bug 分支),在 bug 分支上进行修改,测试无误后再合并到主分支
- 不要直接基于 master 分支开发,最少也得有两个分支,一个 master 分支,一个开发分支
- 在分支的命名上,不要随意命名,最好有统一的命名规范
而不会因为冲突,对主分支的代码产生影响
6. 其他
- 如果主分支代码出现 bug,不要直接在主分支修改,避免此次修改引入其他问题,而是基于主分支创建一个用于修复该 bug 的分支(bug 分支),在 bug 分支上进行修改,测试无误后再合并到主分支
- 不要直接基于 master 分支开发,最少也得有两个分支,一个 master 分支,一个开发分支
- 在分支的命名上,不要随意命名,最好有统一的命名规范
- …