[ Git | 青训营笔记]

79 阅读2分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 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方式网主干分支提交代码。

几种不同的团队合作方式:

  1. owner创建好仓库后,其他成员通过fork创建自己的仓库,然后通过pull request合并到主干。
  2. owner创建好仓库后,给其他成员分配权限,在同一个仓库内进行开发。

Gitlab Flow

原则:upstream first 上游优先

基于一个master,如果某个版本发布后就不再合入到master(除非是修复操作)