青训营笔记|Git
Git 基本命令
项目初始化
git init
常见Git 配置
- 用户名配置
- instead of配置
git config --global user.name ""
git config --global user.email xxx@xx.com
git config --global url.git@github.com:.insteadOf https://github.com/
-
查看 Remote
git remote -v -
添加 Remote
git remote add origin_ssh git remote add origin_http -
添加缓存区
git add -
提交
git commit
git branch(查看当前分支)
git branch -a(查看所有分支)
git checkout 分支名(切换到对应分支) 会自动将代码更新为分支代码
git branch 分支名(创建一个分支)
git branch -d 分支名(删除一个分支)
git branch -D 分支名(强制删除一个未合并的分支)
git checkout -b 分支名 [基于的分支名或commit值](切换分支并直接切换过去)
Objects文件夹详解
- Blob 存储文件的内容
- Tree 存储文件的目录信息
- Commit 存储提交信息,一个 Commit 对应唯一版本的代码
Git Clone & Pull & Fetch
-
Git Clone
拉取完整的仓库到本地目录
git克隆远程分支仓库:
git clone -b 分支名称 远程地址 -
Git Fetch
将远端某些分支最新代码拉取到本地,不会执行 merge 操作
-
Git Pull
拉取远端某分支,并和本地代码进行合并。
Git Push
git push origin master
Git研发流程
集中式工作流
只依托 master 分支进行研发活动
工作方式
- 拉取远端 master 代码
- 直接在 master 分支完成修改
- 提交前拉取最新的 master 代码和本地代码进行合并,如果有冲突解决冲突
- 提交本地代码到 master
Gerrit
基本原理
- 依托于 Change ID概念,每个提交生成一个单独的代码评审。
- 提交上去的代码不会存储在真正的 refs/heads/下的分支中,而是存在一个 refs/for/的引用下。
- 通过 refs/meta/config 下的文件存储代码的配置,包括权限,评审等配置,每个 Change都必须要完成 Review 后才能合入。
分支管理工作流
GitFlow
包含五中类型的分支
- Master 主干分支
- Develop 开发分支
- Feature 特性分支
- Release 发布分支
- Hotfix 热修复分支
Github Flow
只有·一个主干分支,基于 Pull Request 往主干分支中提交代码。
创建一个 Pull Request
- 创建一个 main 主分支
- 创建一个 feature 分支
- 创建一个 feature 到 main 的 Pull Request
在 Github 中可以通过一些保护分支设置,来限制合入的策略。
Gitlab Flow
Gitlab 推荐的工作流在 GitFlow 和 Github Flow 上做出优化
原则:upstream first 上游优先