Git|青训营笔记

68 阅读2分钟

青训营笔记|Git

Git 基本命令

项目初始化

git init

常见Git 配置

  1. 用户名配置
  2. 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 分支进行研发活动

工作方式

  1. 拉取远端 master 代码
  2. 直接在 master 分支完成修改
  3. 提交前拉取最新的 master 代码和本地代码进行合并,如果有冲突解决冲突
  4. 提交本地代码到 master

Gerrit

基本原理

  1. 依托于 Change ID概念,每个提交生成一个单独的代码评审。
  2. 提交上去的代码不会存储在真正的 refs/heads/下的分支中,而是存在一个 refs/for/的引用下。
  3. 通过 refs/meta/config 下的文件存储代码的配置,包括权限,评审等配置,每个 Change都必须要完成 Review 后才能合入。

分支管理工作流

GitFlow

包含五中类型的分支

  1. Master 主干分支
  2. Develop 开发分支
  3. Feature 特性分支
  4. Release 发布分支
  5. Hotfix 热修复分支

Github Flow

只有·一个主干分支,基于 Pull Request 往主干分支中提交代码。

创建一个 Pull Request

  1. 创建一个 main 主分支
  2. 创建一个 feature 分支
  3. 创建一个 feature 到 main 的 Pull Request

在 Github 中可以通过一些保护分支设置,来限制合入的策略。

Gitlab Flow

Gitlab 推荐的工作流在 GitFlow 和 Github Flow 上做出优化

原则:upstream first 上游优先