Git简介

git是目前为止版本管理的最常用工具之一,利用git的功能,可以很容易的实现版本的发布和留档,让原本杂乱的版本管理问题变得较为简单。

工作区域

Git有四个工作区域:工作区,暂存区,本地仓库和远程仓库。

  1. Workspace:工作区,就是你平时存放项目代码的地方
  2. Index / Stage:暂存区,用于临时存放你的改动,保存即将提交到文件列表信息
  3. Repository:本地仓库,就是安全存放数据的位置,这里面有你提交到所有版本的数据。其中HEAD指向最新放入仓库的版本
  4. Remote:远程仓库,托管代码的服务器。

1.总览(一张常用的合并流程如下图)

在这里插入图片描述

修改原则:能改的都是个人分支,多人协调的都是被管控的管理分支

2. Git分支管理和常用流程

Git的常用分支包括:tag(git的功能,并不是真正的分支)、master、hotfix、bugfix、release、develop、feature

2.1 分支简介

分支类型 / 名称 说明 来源分支 合并目标 权限/注意事项
tag 发布上线时基于 master 打的标签,通常为版本号(如 v1.2.0),用于留存与线上完全一致的代码环境,便于紧急回滚或问题排查。 —(非分支,是 Git 标签) 由项目负责人在发布时创建
master 主干分支,代表线上最新稳定版本。有且仅有一个。 接收 releasehotfix 的合并 仅项目负责人可向此分支合入;只允许已测试完成的功能或紧急修复
hotfix 紧急线上 Bug 修复分支,用于快速修复生产环境问题。 master 修复后合并回 master(并打 tag),同时建议同步到 develop 需立即测试并上线;修复完成后需双向合并(master + develop)
release 预发布分支,用于正式上线前的最终测试(转测分支)。 develop 测试通过后合并至 master(并打 tag),同时建议合并回 develop 可进行微调(如修复测试发现的小问题),但禁止合入未完成的功能
develop 主开发分支,包含所有已开发完成但尚未上线的功能,作为开发环境部署和集成测试的基础。 接收所有 feature 分支的合并 所有功能需先在此集成;是 release 分支的来源
feature 功能开发分支,用于开发某个完整功能模块。 develop 开发完成后合并回 develop 通常由特性组长负责,合入需代码 Review
feature-xxx(个人分支) 开发人员个人工作分支,实际编码的主要场所。 featuredevelop(视团队规范而定) 开发完成后合入 feature 或直接合入 develop 个人维护;合入时需代码 Review

2.2 命名规则

  • hotfix: hotfix_{功能},如 hotfix_providerLose。

  • release: release{功能}年月日,如 release_pubMsg_20210701。

  • feature: feature{功能}_年月日,如 feature_pubMsg_20210701。

3. 分支管理

  1. 上线完成,回归测试没有问题之后, 提交申请进行master的合并处理,合并入develop
  2. 打 Tag 维护(负责人 / Leader),视团队情况选择。最好不要省略,出问题时,一阵抓瞎
    命名风格团队保持统一: v20240725-2 ,提交时添加备注
  3. 相关分支创建人, 删除对应上线功能 feature / hotfix 分支

4. Git代码提交规约

  1. 代码提交时,在commit中写清楚完成了哪些内容
  2. 在进行合入develop或者feature时,在合入的Merge request中写清楚方案和实现思路,方便代码review
  3. 理论上一次提交仅包含一个功能修改,如功能过大,需要注明功能的完成进度。若一次提交有多个功能修改,则每个功能提交描述作为单独的一行。

5. 代码提交流程

  1. 代码修改完成后,需先进行编码规范检查,注释检查,单元测试等操作。
  2. 测试通过后提交到本地,检查提交文件是否正确,有无遗漏文件,添加相关说明。
  3. 拉取服务器的代码,检查代码合并结果,若有冲突则找相关人员解决冲突。解决冲突后,重新编译测试代码,测试成功后提交本地代码。
  4. 推送代码到服务器。
  5. 提交merge request,提醒项目组成员进行代码review,完成后负责人合入分支

6. 拉取远程仓库代码方法

6.1 复制远程仓库url
6.2 克隆远程仓库
git clone 远端仓库url
6.3 克隆下来之后默认是master分支,想要拉取非master分支的代码,需要切换本地分支

本地分支要与远程分支同名

git branch -a  // 查看所有分支,包括本地和远程
git checkout develop  // 本地分支名字要与远程分支相同

更新当前分支的代码

git pull origin develop

7. 常用指令

# 添加所有文件到暂存区:
git add .

# 提交暂存区中的内容到本地仓库 -m 提交信息:
git commit -m “消息内容”

# 拉取远程仓库:
git pull [remoteName] [localBranchName]

# 推送远程仓库:
git push [remoteName] [localBranchName]

# 查看指定文件状态:
git status [filename]

# 查看所有文件状态:
git status

# 列出所有本地分支:
git branch

# 列出所有远程分支:
git branch -r

# 列出所有分支:
git branch -a

# 新建一个分支,但依然停留在当前分支:
git branch [branch-name]

# 切换到该分支:
git checkout [branch]

# 新建一个分支,并切换到该分支:
git checkout -b [branch]

# 合并指定分支到当前分支:
git merge [branch]

# 删除分支:
git branch -d [branch-name]

# 删除远程分支:
git push origin --delete [branch-name]/git branch -dr [remote/branch]

# 更新缓存(远端仓库):
git fetch origin

# 将 origin/HEAD 指向远程仓库的默认分支:
git remote set-head origin -a

# 将 origin/HEAD 指向 (origin/dev):
git remote set-head origin dev

# 删除 origin/HEAD:
git remote set-head origin -d

# 提交本地feature分支作为远程的develop分支:
git push origin feature: develop

# tag操作
git tag  -a v20240725-2  
git push origin v20240725-2

7-2. 修改现有仓库的git 地址

在这里插入图片描述

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐