Git实战(四)| Git分支管理实操,搞定在线合并和本地合并

news2025/4/19 8:01:10

类似于SVN这种集中式版本管理,三年前刚来上海工作时候,在华为驻场上班,华为用的就是SVN,印象最深的就是那个小乌龟的图标;后来到外面工作,渐渐发现用Git的非常多,慢慢学习了解发现Git这种分布式的版本管理确实很好很强大,后面也就重点学习Git的分支管理策略了(其实SVN我现在压根就不会了,哈哈。。。)


centralized workflows

以Bitbucket的官方文档的实例作为简单介绍:
例如Mary现在想要开发,在开发前她可以通过checkout命令建立一个新的分支:


Feature Branch Workflow: comit changes
Before she starts developing a feature, Mary needs an isolated branch to work on. She can request a new branch with the following command

git checkout -b marys-feature master

然后Mary可以在这个本地进行相关的更改:

git status
git add <some-file>
git commit

接着她可以不断将本地修改上传至特性分支的中心仓库中,直到自己全完修改完成

git push -u origin marys-feature

git push

然后,她在git gui(GitHub或GitLab等)中提交pull请求,请求将marys特性合并到master中,团队成员将自动收到通知。

Mary的同事Bill收到了pr,Bill觉得在合并到正式项目中之前还需要做一些修改,于是在pr的回复中对Mary进行告知,接着Mary继续修改开发,完成后再次提交pr:


一旦Bill准备接受pull request,有人需要将该特征merge到稳定的项目中(这可以由Bill或Mary来完成)

git checkout master
git pull
git pull origin marys-feature
git push

1080×1454 147 KB

在GitHub上进行基本的演示(实际工作中,公司用的还是GitLab较多,后面会有总结演示)

1.1) 先使用git checkout -b命令来创建一个新的分支并切换到此分支中去,用git branch命令可查看当前所处分支:

$ git checkout -b gitTestBranch
Switched to a new branch 'gitTestBranch'

$ git branch
* gitTestBranch
  master

1.2) 将readme.txt文件最后一行加入如下内容并commit

I am a test engineer.
I want to study Git.
branch gitTestBranch update

1080×258 25.7 KB

1.3) push到远程仓库并查看分支,首次push需要用git push -u 或git push --set-upstream 命令设置上下游的关联关系:

1080×359 48 KB

在GitHub上查看master分支和gitTestBranch分支的对比,可见gitTestBranch已成功push:
master:


gitTestBranch:

1.4) 使用git log --graph --all --decorate=short命令可以查看提交的分支走向,如果分支较多的话就会出现如下效果:

909×857 106 KB

1.5)这个时候我们可以通过pr对分支进行merge:
发起pr


没有conflict,可以直接merge

这个时候再看master分支,就已经被成功合并了

2.1) 先在readme.txt文件中加入一行branch gitTestBranch update2,然后提交到远程分支中:

I am a test engineer.
I want to study Git.
branch gitTestBranch update1
branch gitTestBranch update2
git commit -a -m "gitTestBranch second update"
git push

2.2)通过fetch将gitTestBranch分支拿下来到本地,修改本地文件并合并
修改本地gitTestBranch分支,修改加入“branch gitTestBranch update3”并提交到远程分支

vi readme.txt

I am a test engineer.
I want to study Git.
branch gitTestBranch update1
branch gitTestBranch update2
branch gitTestBranch update3

$ git commit -a -m "third update"
$ git push

2.3)master分支上fetch拿取远程gitTestBranch分支,修改冲突,合并提交

$ git checkout master
$ git fetch origin gitTestBranch
$ git merge origin/gitTestBranch
# fix conflict
$ git commit -a -m "fix conflict"
$ git push

2.4)这时候在GitHub上进行查看:
commit历史中可见提交记录:

检查master,发现已经被成功合并

参考链接:

git的基本使用流程

Atlassian

Setting up a repository | Atlassian Git Tutorial

Set up a git repository: git init creates a new repo, git clone copies an existing repo, git config configures your Git installation from the command line

特性分支工作流

Atlassian

Git Feature Branch Workflow | Atlassian Git Tutorial

Learn if this Git branching model is right for you and your team with this deep dive into the Git Feature Branch Workflow.

gitlab工作流
https://docs.gitlab.com/ee/workflow/gitlab_flow.html
多种工作流对比

Atlassian

Git Workflow | Atlassian Git Tutorial

A brief introduction to common Git workflows including the Centralized Workflow, Feature Branch Workflow, Gitflow Workflow, and Forking Workflow.

gitlab私服搭建

docs.gitlab.com

GitLab Docker images | GitLab

Documentation for GitLab Community Edition, GitLab Enterprise Edition, Omnibus GitLab, and GitLab Runner.

关注我,有问题随时沟通

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/105164.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

5年Crud的我,啃完这份Java王者级核心宝典,成功入职阿里(P7)

我有话要说&#xff0c;请仔细看完 我发现一个现象&#xff0c;很多开发5年的程序员仍然停留在crud的阶段&#xff0c;这是什么原因&#xff1f;最主要的原因就是基础很差&#xff0c;尤其对于JVM和并发编程这方面掌握的比较差&#xff0c;而JVM和并发编程就是非常非常重要的基…

40问 深度挖掘Kafka,你能答上几个?

Kafka最初是由Linkedin公司开发的&#xff0c;是一个分布式的、可扩展的、容错的、支持分区的&#xff08;Partition&#xff09;、多副本的&#xff08;replica&#xff09;、基于Zookeeper框架的发布-订阅消息系统&#xff0c;Kafka适合离线和在线消息消费。它是分布式应用系…

SQL基础——集合运算

集合运算前言思维导图表的加减法表的加法——UNION&#xff08;并集&#xff09;代码示例7.1 创建表Product2代码示例7.2 将数据插入到表Product2中&#xff08;MYSQL&#xff09;代码示例7.3 使用UNION对表进行加法运算包含重复行的集合运算——ALL选项代码示例7.5 保留重复行…

自动机器学习-auto-sklearn

1、前言 自动机器学习&#xff08;AutoML&#xff09; 旨在通过让一些通用步骤 (如数据预处理、模型选择和调整超参数) 自动化&#xff0c;来简化机器学习中生成模型的过程。AutoML是指尽量不通过人来设定超参数&#xff0c;而是使用某种学习机制&#xff0c;来调节这些超参数…

阿里微服务架构到底多牛逼:深入解析Apache Dubbo与实战

本书的由来 在Apache Dubbo (以下简称Dubbo)重新开源之前&#xff0c;Dubbo已经被很多公司广泛用于生产环境并获得了良好的反馈&#xff0c;很多公司内部也会建立私有分支自己维护&#xff0c;其中Dubbox 就是基于Dubbo分支进行扩展并二次维护的。重新开源后&#xff0c;社区维…

【ESXi 7.x内部升级】ESXi 升级 —— 小版本升级(7.X或8.X版本内升级)

目录4. 小版本升级&#xff08;7.X或8.X版本内升级&#xff09;4.1 示例 — 使用 vSphere Lifecycle Manager升级 ESXi目标&#xff1a;将 VMware ESXi 7.0 U2e 升级为 7.0 U3f&#xff08;1&#xff09;在vSphere Client 中查看需要升级的 ESXi 版本&#xff08;2&#xff09;…

【微信篇】PC端微信文件夹里的“微信号“

【微信篇】PC端微信文件夹里的"微信号" 更新记录最敷衍的软件一微信&#xff01;&#xff01;&#xff01;—【蘇小沐】 文章目录【微信篇】PC端微信文件夹里的"微信号"1.实验环境PC端微信文件夹里的"微信号"总结1.实验环境 系统版本Windows 1…

深度学习入门(六十四)循环神经网络——编码器-解码器架构

深度学习入门&#xff08;六十四&#xff09;循环神经网络——编码器-解码器架构前言循环神经网络——编码器-解码器架构课件重新考察CNN重新考察RNN编码器-解码器架构总结教材1 编码器2 解码器3 合并编码器和解码器4 训练模型5 小结参考文献前言 核心内容来自博客链接1博客连…

分布式任务调度 - PowerJob

一、简介 1、介绍 PowerJob&#xff08;原OhMyScheduler&#xff09;是全新一代分布式任务调度与计算框架&#xff0c;其主要功能特性如下&#xff1a; 使用简单&#xff1a;提供前端Web界面&#xff0c;允许开发者可视化地完成调度任务的管理&#xff08;增、删、改、查&am…

数据库原理及MySQL应用 | 约束

约束是保证数据完整性的一种数据库对象&#xff0c;按约束作用不同&#xff0c;分为七种。 约束从字面上来看就是受到限制&#xff0c;它是附加在表上&#xff0c;通过限制列中、行中、表之间数据来保证数据完整性的一种数据库对象。 在MySQL中&#xff0c;有多种约束&#xf…

设计模式原则 - 开闭原则(五)

开闭原则一 官方定义基本介绍二 案例演示普通实现方式案例分析开闭原则实现案例分析三 注意事项一 官方定义 开闭原则&#xff08; Open Close Principle &#xff09;&#xff0c;又称为OCP原则&#xff0c;他的官方定义如下&#xff1a; Software entities like classes,modu…

基于Java+Swing+Mysql实现停车场管理系统

基于JavaSwingMysql实现停车场管理系统一、系统介绍二、系统展示三、其它1.其他系统实现一、系统介绍 1.系统功能 用户 1.登录系统 2.信息查询 包含计费标准&#xff0c;当前在场信息&#xff0c;用户历史信息&#xff0c;用户个人信息&#xff0c;出入场信息&#xff0c;当前…

Win10提示错误代码0xc0000001的解决办法

​有一些朋友在使用Win10系统的时候会遇到蓝屏故障&#xff0c;提示“无法正常启动你的电脑&#xff0c;在多次尝试后&#xff0c;你的电脑上的操作系统仍无法启动&#xff0c;因此需求对其进行修复。” Win10提示恢复无法正常启动你的电脑0xc0000001 故障原因&#xff1a; 错误…

实战案例:初探工程配置 图标组件热身

点击上方卡片“前端司南”关注我您的关注意义重大原创前端司南前言本文是 基于ViteAntDesignVue打造业务组件库[1] 专栏第 3 篇文章【实战案例&#xff1a;初探工程配置 & 图标组件热身】&#xff0c;我将从业务系统中最基础的图标组件入手&#xff0c;带着读者们练练手找找…

websocket的用处及vue和SpringBoot和nginx的引入-入门

websocket的用处及vue和SpringBoot的引入-入门 为什么要有websocket 微信 想一个场景&#xff0c;扫码登录&#xff0c;服务器并不知道用户有没有扫码&#xff0c;怎么办&#xff0c;一种办法是HTTP定时轮询&#xff0c;1-2秒就请求一次服务端&#xff0c;看看用户有没有扫码…

5.3 常见的电感式和电容式感测原理及应用

常见的电感式和电容式感测应用1、电感式和电容式工作原理1.1 电感式感测工作原理1.2 电容式感测工作原理2 FDC&#xff1a;电容式液位感测2.1 电容技术在液位感测中的优势2.2 电容式液位感测入门3 LDC&#xff1a;电感式触控按钮4 LDC&#xff1a;增量编码器和事件计数5 LDC&am…

再学C语言10:字符串(1)

一、字符串定义 字符串&#xff1a;一个或多个字符的序列 "hello world!" 双引号并不是字符串的一部分&#xff0c;只是用于通知编译器其中包含了一个字符串 C没有为字符串定义专门的变量类型&#xff0c;而是将其存储在char数组中 字符串中的字符存放在相邻的存…

Amazon 4.7 星评,领域新经典,了解服务设计就读它

2011 年&#xff0c;Adaptive Path 公司的 Brandon Schauer 粗略估算&#xff0c;美国每年在服务的规划和设计上大约花费 20 亿美元&#xff0c;但其中仅有 7000 万美元&#xff08;大约 3.5%&#xff09;花在了“服务设计”上。做另外 96.5% 的工作的那些人&#xff0c;从不觉…

参加大学生数学建模大赛,Matlab和Python到底哪个更好?

前言 后台的小伙伴经常会问编程过程中&#xff0c;MATLAB和Python到底哪个更好&#xff1f;这个问题一直困惑很多同学&#xff0c;今天小编来给大家从实用型来综合分析一下&#xff1a; 首先从两者各自的应用做个对比。 一、python的优势 Python相对于Matlab最大的优势&…

Mac M2芯 k8s(minikube)超详细实战 - 单节点部分

概述 我使用的电脑是Mac pro M2芯的&#xff0c;使用的虚拟环境是 Ubuntu 22.04 &#xff0c;M2芯兼容性不是特别好&#xff0c;所以尽量跟我博客中的版本保持一致。 虚拟机环境 Ubuntu 22.04docker &#xff1a;20.10.17minikube&#xff1a;v1.25.2 搭建minikube虚拟机环境…