这是我参与「第五届青训营 」伴学笔记创作活动的第 16 天
Git
代码管理
代码管理的方向
-
代码托管
-
代码智能
提供准确的代码搜索和代码导航能力,支持各种场景下的代码自动跳转。
-
代码分析
即检查代码中存在的代码结构、代码漏洞和代码风格问题。
-
持续集成
一种软件开发实践,每次提交后自动触发一次包含自动化验证的构建任务,以便尽早发现问题。
-
Cloud IDE
开箱即用的云端开发环境
为什么要使用Git
- 与其他人协同工作
- 目前大多数开源社区都使用git来维护开源项目
版本控制系统的分类
-
本地版本控制
-
集中式版本控制(如svn)
- 本地没有版本历史,都保存在服务器上
- 使用简单,对于二进制文件支持好。
-
分布式版本控制(如git)
- 每个库都有完整的提交历史
- 使用更为复杂,对于大文件(二进制文件)支持不如svn
如何使用Git?
Git基本命令
-
配置
- git config
- git remote
-
提交代码
- git add:将文件添加到暂存区
- git commit:将当前暂存区的内容提交
-
远端同步
-
拉取代码
-
git clone
-
git pull
相当于git fetch + git merge 两个操作
也可以使用git fetch --rebase来使用rebase而不是merge
-
git fetch
会将远端分支拉取到本地,但是不会自动执行merge
-
-
推送代码
- git push
-
git配置
git config --global
git的配置分为三个级别:global、system和local。每个级别的配置可能会重复,但是低级别的配置会覆盖高级别的配置(即local级别的会覆盖另外两个级别的)
常见的一些Git配置项如下:
-
用戶名的配置
git config --global user.name "xxxx" -
instead of配置
用于替换一些URL,比如
git config --global url@github.com:.insteadOf https://github.com/将https替换为git协议
[url "git@github.com"] insteadOf = https://github.com -
命令别名配置
Git工作流
不同的工作流
-
集中式工作流
例如SVN,特点是只依赖于主干分支进行开发,不存在其他分支
-
分支管理工作流
例如github,可以在不同的分支上开发,然后通过MR、PR合入主分支。
Github Flow
只有一个主干分支,基于Pull Request方式网主干分支提交代码。
几种不同的团队合作方式:
- owner创建好仓库后,其他成员通过fork创建自己的仓库,然后通过pull request合并到主干。
- owner创建好仓库后,给其他成员分配权限,在同一个仓库内进行开发。
Gitlab Flow
原则:upstream first 上游优先
基于一个master,如果某个版本发布后就不再合入到master(除非是修复操作)