首页 > 其他分享 >Git分支模型

Git分支模型

时间:2023-11-01 16:00:45浏览次数:38  
标签:git name 模型 feature Git master hotfix 分支

REF

https://www.sohu.com/a/234659269_575744

 

版本管理工具

项目开发过程中大家可能使用比较多的版本管理工具有:VisualSVN、TortoiseSVN、Bazzar、Mercurial、Git、Bitkeeper 等等。

其中 VisualSVN、TortoiseSVN、Bazzar为集中式版本控制系统。Mercurial、Git、Bitkeeper为分布式版本控制系统

 

集中式与分布式版本控制的对比

集中式版本控制的优点在于可以对具体的文件或目录进行权限控制,缺点在于通过与中心服务器连接执行所有操作,必须联网。

 

分布式版本控制的优点具体如下:

1. 分支管理

2. 安全性更高(因为每个客户机本地都有保留完整的版本库)

3. 离线工作,操作便捷(不联网也能照常工作)

4. 可以实现非常灵活的工作流组合(后面有介绍Git工作流)

分布式版本控制的缺点由于分布式的特性,很难对版本库中具体的文件或者目录做精细的权限控制。

 

Git 分支模型

Git是什么?

Git(读音为/gt/。)是一个开源的分布式版本控制系统,可以有效、高速的处理从很小到非常大的项目版本管理。

 

有哪些Git代码托管平台

国内常见的 Git 代码托管平台有码云(Gitee)、码市(Coding)等,国外常见的代码托管平台有 Github、Bitbucket、Gitlab、VSTS 等。

 

有哪些Git工作流

Centralized(集中式工作流)

Feature Branch(功能分支工作流)

Gitflow (GitflowI作流)

Fork (Fork工作流)

 

集中式工作流

集中式工作流(Centralized)是以中央仓库作为项目所有修改的单点实体。所有新功能的开发都是基于一个叫 master 分支进行。

Git分支模型_git

  小明          小红           小强

 

举个例子:

1、小明开始开发新功能;

Git分支模型_热修复_02

 

 

2、小红开始开发新功能;

Git分支模型_热修复_03

 

 

3、小明完成新功能开发,并提交到master分支;

Git分支模型_热修复_04

 

 

4、小红完成新功能开发,并提交到master分支,此时提示与小明的内容发生冲突,小红提交不了代码,现在很苦恼!

Git分支模型_git_05

 

 

5、小强发现并及时帮助小红rebase了本地的master分支获取了最新代码;

Git分支模型_热修复_06

  $ git pull -- rebase origin master

 

6、在小强的帮助下,小红也可以提交新功能开发到master分支;

Git分支模型_热修复_07

 $ git push origin master

在这件事之后小红和小明的关系越走越远,跟小强的人 关系越走越近。

 

功能分支工作流

该工作流中每个用户都基于 master 分支创建一个新的功能分支,相比于集中式工作流会更加的安全以及产生更低的冲突率。

基于 master 分支

$ git checkout master

$ git fetch origin

$ git reset -- hard origin/master

创建新分支

$ git checkout -b new-feature master

举个例子:

小强和小红在同一个项目组,现在合作开发一个项目,项目的主分支为master。

小红建一个新分支

Git分支模型_热修复_08

 

 

$ git checkout -b xh-feature master

中午到了,小红提交了本地的修改信息并通知到小强后去吃午饭;

Git分支模型_新功能_09

 

 

$ git add .

$ git commit -m 'add commit'

$ git push origin xh-feature

午饭过后,小红合并了新分支到master并提交至远程仓库;

Git分支模型_新功能_10

 

 

$ git checkout master

$ git merge xh-feature

$ git push origin master

下午小强获取小红的代码后发现其开发的功能需求不对,通知小红更新;

Git分支模型_热修复_11

 

 

小红重新修改功能需求后,提交修改并发布;

Git分支模型_新功能_12

 

 

Fork工作流

该工作流不同于其他类型的工作流,它主要是通过在第三方代码托管平台。上进行 Fork一个开源项目到自己的仓库中。与clone方式不同,clone主要是对目标仓库数据的一次拷贝。

Gitflow工作流

Gitflow工作流仍然用中央仓库作为所有开发者的交互中心。和其它的工作流一样,开发者在本地工作并 push 分支到要中央仓库中。

Git分支模型_热修复_13

 

 

Gitflow 工作流使用2个分支来记录项目的历史。master 分支存储了正式发布的历史,而develop分支作为功能的集成分支。这样也方便 master 分支上的所有提交分配一个版本号。

主要分支:

标签:git,name,模型,feature,Git,master,hotfix,分支
From: https://blog.51cto.com/emanlee/8129059

相关文章

  • linux之部署gitlab
    gitlab安装以及使用1.卸载gitlab#先停止服务sudogitlab-ctlstop#卸载gitlabsudoyumremovegitlab-ce-y#删除所有文件sudorm-rf/etc/gitlabsudorm-rf/var/opt/gitlabsudorm-rf/opt/gitlab#清理不再需要的软件包sudoyumautoremove-y2.安装gitlab#......
  • git不能正常clone代码
    报错:fatal:unabletoaccess'https://github.com/ruanwenjun/JAVAWeb-Project.git/':Recvfailure:Connectionwasaborted解决办法:1.在git中执行  gitconfig--global--unsethttp.proxy  gitconfig--global--unsethttps.proxy2.在电脑终端执行: ipconfi......
  • 知识图谱与大模型相结合的3种方法,1+1>2
    本文分享自华为云社区《知识图谱与大模型结合方法概述》,作者:DevAI。《UnifyingLargeLanguageModelsandKnowledgeGraphs:ARoadmap》总结了大语言模型和知识图谱融合的三种路线:1)KG增强的LLM,可在LLMs的预训练和推理阶段引入KGs;2)LLM增强KG,LLM可用于KG构建、KGembedding、K......
  • 知识图谱与大模型结合方法概述
    《UnifyingLargeLanguageModelsandKnowledgeGraphs:ARoadmap》总结了大语言模型和知识图谱融合的三种路线:1)KG增强的LLM,可在LLMs的预训练和推理阶段引入KGs;2)LLM增强KG,LLM可用于KG构建、KGembedding、KG补全、基于KG的文本生成、KBQA(基于图谱的问答)等多种场景;3)LLM+KG协同使......
  • 02-GIT分支与gitee码云
    一、git分支1.分支命令实践1.1查看分支默认版本仓库只有一个分支,mastergitbranch查看当前我们在哪一个分支,有星星就是你在哪此例的意思就是,我们有一个叫做master的分支,并且该分支是当前分支。当你执行gitinit的时候,默认情况下Git就会为你创建master分支。#g......
  • Gitlab搭建
    参考:https://blog.csdn.net/weixin_56270746/article/details/125427722安装依赖#关闭防火墙systemctlstopfirewalldsystemctldisablefirewalld#安装ssh依赖yuminstall-ycurlpolicycoreutilsopenssh-serveropenssh-clients设置gitlab的yum源(使用清华镜像源安装Git......
  • 【MME编写入门】光照模型
    float4x4WorldViewMatrix:WORLDVIEW;float4x4WorldViewProjMatrix:WORLDVIEWPROJECTION;float4x4WorldMatrix:WORLD;//需要用到的矩阵//需要用到光的位置、相机位置float3LightDirection:DIRECTION<stringObject="Light";>;fl......
  • 1api触发gitlab流水线
    是的,通过GitLabAPI,您可以修改文件内容,并在更改后自动触发CI/CD流水线。以下是步骤和示例:1.**修改文件内容**:   使用`RepositoryFilesAPI`更新文件内容。这将为您提供一个提交新文件内容的方式。 示例请求: ```http PUT/projects/:id/repository/fil......
  • 没有可用软件包 gitlab-jh。
    一问题安装gitlab时,提示“没有可用软件包gitlab-jh” 二解决1、yum没有找到对应依赖包,更新epel第三方软件库,运行命令:yuminstall-yepel-release更新完epel第三方软件库后,再次尝试使用yum命令安装对应的软件包2、如果还不行yumupdate更新,时间长一些  ......
  • Python用PyMC3贝叶斯模型平均BMA:采样、信息准则比较和预测可视化灵长类动物的乳汁成分
    当面对多个模型时,我们有多种选择。模型选择因其简单性而具有吸引力,但我们正在丢弃有关模型中不确定性的信息。  print(f"Runing模型平均一种替代方法是执行模型选择,但讨论所有不同的模型以及给定信息准则的计算值。重要的是要将所有这些数字和测试放在我们问题的背景下,以便我们和......