这是我参与「第五届青训营 」伴学笔记创作活动的第 1 天
版本控制的历史
- 本地版本控制
- RSC
- 本地复制文件夹
- 集中版本控制
- 远端服务器保存文件
- 本地不保存所有版本的代码,容易历史版本丢失
- 分支支持不好
- 分布式版本控制
- Git
- 分布式开发
- 分支强大
- 校验和机制保证完整
Git基本命令
配置
# git config
git config --global user.name "xxx"
git config --global user.email xxx@xxx.com
# git remote
# 查看Remote
git remote -v
# 添加Remote
git remote add origin_ssh git@github.com:git/git.git
git remote add origin_http https://github.com/git/git.git
同一Origin设置不同的Push和Fetch URL
提交
# git add 将文件添加到暂存区
git add .
# git commit 提交
git commit -m "new commit"
# 创建一个分支
git checkout -b dev
# 在当前生成一个tag
git tag v0.0.1
git tag -a ve.0.2 -m "my version vo.0.2"
# git commit --amend 用途
# 1. 提交了代码之后,又有新的改动,不想创建两个commit
# 2. 发现一个地方改错了,下次提交时不想保留上一次的记录
# git commit --amend 会把暂存区的文件自动加入,可以使用-a把工作区的文件也一起加入
# 可以使用 git commit --amend -m "提交描述" 修改comment
# 使用后commit并不会直接删除,只是没有ref指向它 可以使用 git gc 删除不需要的对象
远端同步
git clone
# git pull 拉取并合并
# git fetch 只拉取远端分支,不合并
git push
# git push origin master -f 会强制推送
Git的对象
- Blob
- 存储文件内容
- Tree
- 存储文件的目录信息
- Commit
- 存储提交信息,一个Commit对应唯一版本的代码
由下至上依次寻找
- Refs
- 对应Commit ID
- refs/heads/分支名
- refs/tags/标签名
不同的分支管理工作流
Git Flow
- 包含五种类型的分支
- Master:主干分支
- Develop:开发分支
- Feature:特性分支
- Release:发布分支
- Hotfix:热修复分支
- 优点
- 如果能按照定义的标准严格执行,代码会很清晰,并且很难出现混乱。
- 缺点
- 流程过于复杂,上线的节奏会比较慢。由于太复杂,研发容易不按照标准执行,从而导致代码出现混乱。
Github Flow
- 只有一个主干分支
- 团队合作方式
- owner创建好仓库后,其他用户通过Fork 的方式来创建自己的仓库,并在 fork的仓库上进行开发
- owner创建好仓库后,统一给团队内成员分配权限,直接在同一个仓库内进行开发
Gitlab Flow
- Gitlab推荐的工作流是在GitFlow 和Github Flow上做出优化,既保持了单一主分支的简便,又可以适应不同的开发环境。
- 原则:上游优先
- 只有在上游分支采纳的代码才可以进入到下游分支,一般上游分支就是master.