Git的使用 | 青训营笔记

88 阅读3分钟

Git是什么?

Git是一种分布式版本控制系统,可以对代码进行分支、合并操作,查看代码的修改历史和不同版本,提高团队协作开发的效率.

什么是版本控制?

记录文件的修改,包括内容的修改、谁修改的、什么时候修改等等,从而形成一条条记录,或者说版本,可以根据需要回滚到特定版本

版本控制类型

  1. 本地版本控制
  2. 集中式版本控制
    • 学习成本低
    • 支持二进制文件存储
    • 代码集中管理控制
  3. 分布式版本控制

为什么要学习Git?

  • 协同工作:绝大多数公司的代码管理都是基于Git
  • 参与开源项目:绝大多数的开源项目也都是基于Git维护的

Git的区域

  • 工作区:项目文件夹,尚未被commit
  • 暂存区:已commit,也做好了push的准备,
  • 本地库:存储在本地计算机上的Git仓库,负责项目的版本控制、记录项目的历史变更、处理分支操作等
  • 远程库:主要指第三方代码托管平台,主要是指Github

常见Git配置命令

用户配置

  • git config --global user.name "lizh"
  • git config --global user.email "lizh@Git.com"

别名配置

  • git config --global alias.cin "commit --amend --no-edit"

仓库配置

提交代码

  • 提交到暂存区
    • git add
  • 提交到本地库
    • git commit
  • 提交到远程库
    • git push
  • 远程库克隆到本地库
    • git clone

修改历史版本

  • 修改最近一次commit
    • git commit --amend
  • 实现对最近三个commit的修改
    • git rebase -i HEAD~3

Clone & Pull & Fetch

  • Clone 拉取远程仓库到本地库,可以指定分支
  • Fetch 用于从远程仓库获取最新的提交记录和代码文件,但不会合并到本地仓库的当前分支上
  • Pull 拉取远端某分支,并和本地分支合并,可能存在冲突,需要解决冲突

Object

  • Blob(文件对象):代表数据,通常以文件名和内容的哈希值作为其唯一标识符
  • Tree(目录对象):代表目录结构,包含一个或多个Blob或Tree对象,有唯一一个哈希值标识自己
  • Commit(提交对象):代表一次修改的提交,
  • Tag(标签对象)
  • 使用git cat-file -p <object-hash> 命令可以查看指定对象的内容、类型等信息

研发流程

分支管理工作流

  • Git Flow:分支类型丰富,规范严格
  • Github Flow:只有主干分支和开发分支,规则简单
  • Gitlab Flow:在主干分支和开发分支之上构建环境分支,版本分支,满足不同发布or环境的需要
GitFlow
  • Master:主干分支
  • Develop:开发分支
  • Feature:特性分支
  • Release:发布分支
  • Hotfix:热修复分支
GithubFlow

选择团队合作的方式

  1. owner创建仓库,其他用户通过Fork的方式来创建自己的仓库并进行开发
  2. owner创建仓库,给团队成员分配权限,在同一个仓库协作开发