Git 多人协作
目录
情景一
情景二
合并分支
情景一
目标:远程 master 分支下的 file.txt 文件新增代码 "aaa","bbb"。
实现:由开发者1新增 "aaa" ,开发者2新增 'bbb''。
条件:在一个分支下合作完成。
针对以上情景我们要注意的是,虽然实在 master 分支下对应文件中新增代码,但是在实际开发中,我们是不建议在 master 分支中进行代码的添加的,因为 master 分支中我们主要保存的是经过测试之后比较完善且稳定的代码,直接在 master 分支中新增代码,就有可能导致之前稳定的代码出现 bug。所以我们首先要创建一个 dev 分支,在 dev 分支中新增代码之后,最终合并到master 分支中。
1.在远程创建一个 dev 分支。
2.在本地 linux 服务器中,也创建一个 dev 分支,然后将远程的 dev 分支拉取到本地,并且创建本地 dev 分支和远程 dev 分支的联系。linux服务器代表第一个开发者。
为什么要添加本地 dev 分支和远程 dev 分支的联系呢?
因为我们的推送和拉取其实就是对远程分支和本地分支的管理。所以如果我们在使用 git push 和 git pull 指令在进行拉取和推送时,没有添加远程分支和本地分支相关的信息,就必须先对远程分支和本地分支建立连接。
使用 git branch -a 指令查看本地仓库中和拉取的远程的 dev 分支。
我们已经成功创建了 dev 分支并且已经成功的拉取了远程的 dev 分支。
使用 git branch -vv 指令可以查看本地仓库分支和远程仓库分支是否建立了连接。
我们发现,只有本地的 master 分支和远程的 master 分支建立了连接,但是本地的 dev 分支并没有和远程的 dev 分支建立连接。
因为我们是在本地创建了 dev 分支之后再与远程的 dev 分支进行连接的。
所以我们必须先切换到 dev 分支然后再与远程 dev 分支建立连接。
使用 git branch -u origin/[分支名称] 建立连接。
此时,本地 dev 分支已经和远程的 dev 分支建立了联系。
当然,我们可以在创建分支的时候,使用 git checkout -b [本地分支名称] origin/[远程分支名称] 的指令建立本地分支和远程分支的联系。
3.在本地的 dev 分支中对 file.txt 文件新增 "aaa",并将修改后的 file.txt 文件推送到远程的 dev 分支中。
通过上图我们发现,远程的 dev 分支中已经有了本地服务器1中新增的 "aaa" 。
4.在本地 windows 服务器上克隆远程仓库到本地,然后再本地 windows 服务器上创建 dev 分支。 windows 服务器代表第二个开发者。
在本地仓库中创建 dev 分支时,我们直接与远程的 dev 分支建立了连接。
5.给 dev 分支中添加 "bbb" ,然后 push 到远程。
在本地分支 dev 中新增的 "bbb" 已经被上传到了远程的 dev 分支中。
6. 将远程 dev 分支中的内容 pull 到本地 dev 分支中。此时的本地服务器是我们的 linux 服务器,当然也可以是 windows 服务器。
其实我们可以直接在远程的 Pull Request 中进行分支的合并,但是这需要审核人员进行审核,这也是我们在项目开发中常用的合并分支的方法,目标分支合并了源分支,审核人员通常为开发组长或者项目经理。
但是为了熟练之前的操作,我们选择在本地进行了分支合并之后,再将合并之后 master 分支中的内容提交到远程的 master 分支中。
通过上图可以看出,我们已经将远程仓库 dev 分支中的 file.txt 文件的内容拉取到了本地仓库 dev 分支中并与本地的 file.txt 进行了合并。
7.让本地仓库中的 dev 分支合并 master 分支。
有的小伙伴就有点疑惑了,不应该是 master 分支合并 dev 分支吗?
其实这是因为,有可能在本地创建了 dev 分支之后,本地仓库的 master 分支又 pull 了远程仓库 master 分支中的内容,所以本地的仓库的 master 分支就进行了新的提交,所以此时如果将master 分支合并 dev 分支,就有可能会导致合并冲突,如果在 master 分支中解决冲突,就有可能导致一些新的问题,所以我们要先让本地 dev 分支和并 master 分支并解决冲突,最终再让 master 分支合并 dev 分支,此时就不会再产生冲突。
通过上图,我们发现 dev 分支已经合并了 master 分支。
通过上图我们发现,master 分支已经合并了 dev 分支。
8.将本地的 master 分支中的内容 push 到远程的 master 分支中。
此时我们就已经完成了情景一的所有内容。
一般情况下,两个开发人员并不会在同一个分支中进行开发,而是会在多个分支中进行开发,因为在一个分支中进行开发一定会造成冲突。所以便引入了多人协作的下一情景。
情景二
目标:远程 master 分支下新增 function1 和 function2 文件。
实现:由开发者1新增 function1,由开发者2新增 function2。
条件:在不同分支下协作完成,各自让某一个功能私有某一个分支。
云服务器我们为开发者1,windows 服务器我们为开发者2。
1.云服务器创建 feature1 分支,在该分支上创建 function1 文件,并提交到远程仓库的 feature1 分支中。
此时在远程仓库中我们也已经看到了 function1 这个文件。
当我们远程没有创建对应的分支时,在本地 push 对应的分支时,会自动在远程仓库中创建对应的分支并进行上传。
2.在 windows 服务器上创建 feature2 分支,并在 feature2 分支中创建 function2 文件,并推送到远程仓库的 feature2 分支中。
在远程仓库中我们也发现了提交的 function2 文件。
如果开发者2有一天突然生病了,那么此时开发者2将它的工作交给了开发者1来完成,那么此时开发者1该怎样完成呢?
1.云服务器中显拉取远程仓库的 feature2 分支。
使用 git pull 拉取远程分支到本地。
2.在云服务器中创建本地 feature2 分支,并建立与远程 feature2 分支的连接。
3.修改 function.txt 文件中的内容,并进行提交推送到远程仓库中。
如上图,在远程分支中也成功观察到了文件内容的修改。
但是此时在开发者2的 feature2 分支中仍然是看不到修改的内容的。
所以我们需要将远程 feature2 分支中的内容拉取到开发者2 的 feature 下。
使用 git pull 指令进行拉取。
此时在开发者2的 feature2 分支中,也可以看到修改之后的内容。
合并分支
我们已经在 feature1 和 feature2 分支中创建了对应的文件,并且已经提交到了远程仓库,此时我们需要的就是,将远程仓库中的分支进行合并。
1.在远程合并 feature2 分支和 master 分支。
直接使用 PR 进行合并。
最终在 mater 分支下就有了在 feature2 分支中创建的 function2.txt 文件。
2.在远程合并 master 分支和 feature1 分支。
这是一上述在远程合并 master 分支和 feature2 分支种比较常见的合并方法。但是为了安全起见,我们还是建议在合并分支时,先让 feature1 分支合并 master 分支,有冲突解决冲突,解决冲突完成之后再让 master 分支和并 feature1 分支,这样就会降低合并冲突时的风险。
先让 master 分支 pull 远程 master 分支中的内容,使得 master 分支中的内容最新。
然后将合并后的 feature1 分支推送到远程 feature1 分支中。
最后使用 PR 申请合并 master 分支和 feature1 分支。
最终成功将 feature1 合并进了 master 分支中,成功看到了在 feature1 分支中创建的 function1 文件。
合并分之后,删除多余的分支。
最终只剩下了 master 分支。
虽然在远程删除掉了分支,但是在本地中仍然可以看到。
使用 git remote show [仓库名称] 可以查看到远程分支与本地分支的关系,并且可以看到远程哪些分支已经删除。
使用 git remote prune [分支名称] 删除已经不存在的分支。
如上图在远程仓库中删除的分支在本地也看不到了,记得还要删除本地已经被合并的分支。。
以上便是在使用 git 进行多人合作时常见的两个情景,情景二应用最广泛。
以上便是本期的所有内容。
本期内容到此结束^_^
相关文章:
Git 多人协作
目录 情景一 情景二 合并分支 情景一 目标:远程 master 分支下的 file.txt 文件新增代码 "aaa","bbb"。 实现:由开发者1新增 "aaa" ,开发者2新增 bbb。 条件:在一个分支下合作完成。 针对以上情景我们要注意…...
Unity 人物模型学习笔记
一、关于模型的检查 拿到人物模型时,检查人物: 位置信息是否在0点布线/UV是否正常身体各部分是否分开各部分命名是否清晰骨骼需要绑定 二、Unity人物动画 https://www.bilibili.com/video/BV1cc41197mF?spm_id_from333.788.recommend_more_video.-1&a…...
【和春笋一起学C++】(十四)指针与const
将const用于指针,有两种情况: const int *pt; int * const pt; 目录 1. const int *pt 2. int * const pt 3. 扩展 1. const int *pt 首先看第一种情况,const在int的前面,有如下语句: int peoples12࿱…...
AI知识梳理——RAG、Agent、ReAct、LangChain、LangGraph、MCP、Function Calling、JSON-RPC
AI技术I AI技术II RAG 📌 高度凝练表达 RAG (检索增强生成)是一种结合信息检索与生成式人工智能的技术框架,旨在提升大型语言模型(LLM)的输出准确性和实用性。通过在生成响应前引入外部知识库的信息&#…...
ModuleNotFoundError: No module named ‘SDToolbox‘
(py311) C:>python Python 3.11.11 | packaged by Anaconda, Inc. | (main, Dec 11 2024, 16:34:19) [MSC v.1929 64 bit (AMD64)] on win32 Type “help”, “copyright”, “credits” or “license” for more information. from SDToolbox import PostShock_eq Tracebac…...
在宝塔中使用.NET环境管理部署 .NET Core项目
本次采用的演示环境未腾讯云轻量级服务器,使用应用模板,选择宝塔liunx面板。 一、登录宝塔安装环境 直接选择免密登录 进入腾讯云webshell后,输入bt,选择14 选择网站选择.NET项目安装.NET环境管理安装对应的.NET 版本 注意&…...
【DAY21】 常见的降维算法
内容来自浙大疏锦行python打卡训练营 浙大疏锦行 目录 PCA主成分分析 t-sne降维 线性判别分析 (Linear Discriminant Analysis, LDA) 作业: 什么时候用到降维 降维的主要应用场景 知识点回顾: PCA主成分分析t-sne降维LDA线性判别 通常情况下,…...
Linux面试题集合(3)
一秒刷新一次某个进程的状况 top -d 1 -p pid ’显示pid为1、2、3的进程的状况 top -p 1,2,3(按上键选择某个进程) 强制杀死进程 kill -9 pid 说一下ps和top命令的区别 ps命令只能显示执行瞬间的进程状态 top命令实时跟进进程状态 你在工作中什么情况下…...
Pytorch实现常用代码笔记
Pytorch实现常用代码笔记 基础实现代码其他代码示例Network ModulesLossUtils 基础实现代码 参考 深度学习手写代码 其他代码示例 Network Modules Pytorch实现Transformer代码示例 Loss PyTorch实现CrossEntropyLoss示例 Focal Loss 原理详解及 PyTorch 代码实现 PyTorc…...
vscode vue 项目 css 颜色调色版有两个
vue 项目 css 颜色调色版有两个,不知道是哪个插件冲突了。 这个用着很别扭,一个个插件删除后发现是 Vue - Official 这个插件问题,删了就只有一个调色版了。...
MySQL刷题相关简单语法集合
去重 distinct 关键字 eg. :select distinct university from user_profile 返回行数限制: limit关键字 eg. :select device_id from user_profile limit 2 返回列重命名:as 关键字 eg.:select device_id as user_in…...
MySQL多条件查询深度解析
一、业务场景引入 在数据分析场景中,我们经常会遇到需要从多个维度筛选数据的需求。例如,某教育平台运营团队希望同时查看"山东大学"的所有学生以及所有"男性"用户的详细信息,包括设备ID、性别、年龄和GPA数据ÿ…...
RT Thread FinSH(msh)调度逻辑
文章目录 概要FinSH功能FinSH调度逻辑细节小结 概要 RT-Thread(Real-Time Thread)作为一款开源的嵌入式实时操作系统,在嵌入式设备领域得到了广泛应用。 该系统不仅具备强大的任务调度功能,还集成了 FinSH命令行系统,…...
安装nerdctl和buildkitd脚本命令
#!/bin/bash set -euo pipefail # 检查是否以root权限运行 if [ "$(id -u)" -ne 0 ]; then echo "错误:请使用root权限或sudo运行本脚本" >&2 exit 1 fi # 检测openEuler系统(兼容大小写) detect_distrib…...
HTTP与HTTPS协议的核心区别
HTTP与HTTPS协议的核心区别 数据传输安全性 HTTP采用明文传输,数据易被窃听或篡改(如登录密码、支付信息),而HTTPS通过SSL/TLS协议对传输内容加密,确保数据完整性并防止中间人攻击。例如,HTTPS会生成对称加…...
51单片机仿真突然出问题
最近发现仿真出问题了,连最简单的程序运行结果都不对,比如,左移位<<,如果写P1 << 1;则没有问题,但写成P1 << cnt;就不对(cnt已经定义过,而且赋了初值&…...
(C语言)超市管理系统 (正式版)(指针)(数据结构)(清屏操作)(文件读写)(网页版预告)(html)(js)(json)
目录 前言: 源代码: product.h product.c fileio.h fileio.c main.c json_export.h json_export.c tasks.json idex.html script.js 相关步骤: 第一步: 第二步: 第三步: 第四步: 第五步…...
uni-app小程序登录后…
前情 最近新接了一个全新项目,是类似商城的小程序项目,我负责从0开始搭建小程序,我选用的技术栈是uni-app技术栈,其中就有一个用户登录功能,小程序部分页面是需要登录才可以查看的,对于未登录的用户需要引…...
从零开始理解Jetty:轻量级Java服务器的入门指南
目录 一、Jetty是什么?先看一个生活比喻 二、5分钟快速入门:搭建你的第一个Jetty服务 步骤1:Maven依赖配置 步骤2:编写简易Servlet(厨房厨师) 步骤3:组装服务器(餐厅开业准备&am…...
如何免费在线PDF转换成Excel
咱们工作中是不是经常遇到这种头疼事儿?辛辛苦苦从别人那里拿到PDF文件,想改个数据调个格式,结果发现根本没法直接编辑! 数据被困住:PDF表格无法直接计算/筛选,手动录入太反人类! 格式大崩坏&…...
StarRocks MCP Server 开源发布:为 AI 应用提供强大分析中枢
过去,开发者要让大模型(LLM)使用数据库查询数据,往往需要开发专属插件、设计复杂的接口或手动构建 Prompt,这不仅费时费力,而且很难在不同模型之间复用。StarRocks MCP Server 提供了一个“通用适配器”接口…...
Vue百日学习计划Day21-23天详细计划-Gemini版
总目标: 在 Day 21-23 完成 Vue.js 的介绍学习、环境搭建,并成功运行第一个 Vue 3 项目,理解其基本结构。 Day 21: Vue.js 介绍与概念理解 (~3 小时) 本日目标: 理解 Vue.js 是什么、渐进式框架的概念以及选择 Vue 的原因。初步了解 Vite 是什么及其作用…...
JS逆向-某易云音乐下载器
文章目录 介绍下载链接Robots文件搜索功能JS逆向**函数a:生成随机字符串****函数b:AES-CBC加密****函数c:RSA公钥加密** 歌曲下载总结 介绍 在某易云音乐中,很多歌曲听是免费的,但下载需要VIP,此程序旨在“…...
Qt与Hid设备通信
什么是HID? HID(Human Interface Device)是直接与人交互的电子设备,通过标准化协议实现用户与计算机或其他设备的通信,典型代表包括键盘、鼠标、游戏手柄等。 为什么HID要与qt进行通信? 我这里的应…...
QT使用QXlsx读取excel表格中的图片
前言 读取excel表格中的图片的需求比较小众,QXlsx可以操作excel文档,进行图片读取、插入操作,本文主要分享单独提取图片和遍历表格提取文字和图片。 源码下载 github 开发环境准备 把下载的代码中的QXlsx目录,整个拷贝到所创建…...
二叉树进阶
一、二叉搜索树 1.二叉搜索树的概念 二叉搜索树又称二叉排序树,它也可以是一棵空树,或是具备以下性质的树: 1.1 若它的左子树不为空,则它左子树上所有节点的值都小于根节点的值。 1.2 若它的右子树不为空,则它右子…...
腾讯 CodeBuddy 杀入 AI 编程赛道,能否撼动海外工具霸主地位?
在 AI 编程助手领域,海外的 Cursor 等工具风头正劲,如今腾讯带着 CodeBuddy 隆重登场,国产 AI 编程助手能否借其之力崛起?让我们一探究竟。 官网: 腾讯云代码助手 CodeBuddy - AI 时代的智能编程伙伴 实战安装教程 …...
项目QT+ffmpeg+rtsp(二)——海康威视相机测试
文章目录 前言一、验证RTSP地址的有效性1.1 使用VLC播放器验证1.2 使用FFmpeg命令行验证1.3 使用Python代码检查网络连接1.4 检查摄像头Web界面1.5 使用RTSP客户端工具二、关于IPV4的地址2.1 原来2.1.1 原因2.2 解决2.3 显示前言 昨晚拿到一个海康威视的相机,是连接上了交换机…...
vscode用python开发maya联动调试设置
如何在VScode里编写Maya Python脚本_哔哩哔哩_bilibili1 包括1,maya的python全面在vscode支持,2,通过mayacode发送到maya,3同步调试 import maya.cmds as cmds 1、让 maya.cmds编译通过 下载Autodesk_Maya_2018_6_Update_DEVK…...
Postman遇到脚本不支持replaceIn函数
目录: 1、问题现象2、代码处理3、执行结果 1、问题现象 2、代码处理 function replaceVariables(template) {// 获取所有变量(环境变量全局变量)const variables pm.environment.toObject();const globalVars pm.globals.toObject();const…...
精益数据分析(64/126):移情阶段的用户触达策略——从社交平台到精准访谈
精益数据分析(64/126):移情阶段的用户触达策略——从社交平台到精准访谈 在创业的移情阶段,精准找到目标用户并开展深度访谈是验证需求的关键。今天,我们结合《精益数据分析》中的方法论,探讨如何利用Twit…...
turn.js与 PHP 结合使用来实现 PDF 文件的页面切换效果
将 Turn.js 与 PHP 结合使用来实现 PDF 文件的页面切换效果,你需要一个中间步骤将 PDF 转换为 Turn.js 可以处理的格式(如 HTML 页面或图片)。以下是实现这一功能的步骤和示例代码: 步骤 1: 安装必要的库 首先,你需要…...
SQL Server 与 Oracle 常用函数对照表
一、字符串处理函数 SQL Server 函数SQL Server 实例Oracle 函数Oracle 实例输出结果CONCATSELECT CONCAT(A, B, C);CONCATSELECT CONCAT(A, B) FROM DUAL;ABC(SQL) AB(Oracle)SUBSTRINGSELECT SUBSTRING(Hello, 2, 3);SUBSTRSEL…...
数据治理新纪元:全面解读TSDDITAI系列评估规范
在数字化转型的浪潮中,数据已成为驱动业务增长和创新的核心要素。然而,如何确保大数据产品、企业、人才及数据资源的优质与合规,成为了摆在行业面前的重大课题。为此,TSDDITAI系列评估规范应运而生,为大数据产业的健康…...
电子电路:什么是色环电阻器,怎么识别和计算阻值?
识别和计算色环电阻的阻值需要掌握颜色编码规则和基本步骤。以下是具体方法及窍门: 一、色环电阻的基本规则 色环数量: 4环电阻:前2环为有效数字,第3环为倍乘(10ⁿ),第4环为误差。5环电阻:前3环为有效数字,第4环为倍乘,第5环为误差。6环电阻(较少见):前3环为有效数…...
UE中的各种旋转
1 直接修改第三人称玩家的角度 注意不是修改玩家的actor或者pawn,而是修改controller的旋转 这只会修改相机的方向,不会修改角色的方向,因为第三人控制器的根物体不受controller控制,而相机弹簧臂受controller控制 如果修改角色…...
游戏引擎学习第289天:将视觉表现与实体类型解耦
回顾并为今天的工作设定基调 我们正在继续昨天对代码所做的改动。我们已经完成了“脑代码(brain code)”的概念,它本质上是一种为实体构建的自组织控制器结构。现在我们要做的是把旧的控制逻辑迁移到这个新的结构中,并进一步测试…...
NestJS——日志、NestJS-logger、pino、winston、全局异常过滤器
个人简介 👀个人主页: 前端杂货铺 🙋♂️学习方向: 主攻前端方向,正逐渐往全干发展 📃个人状态: 研发工程师,现效力于中国工业软件事业 🚀人生格言: 积跬步…...
list重点接口及模拟实现
list功能介绍 c中list是使用双向链表实现的一个容器,这个容器可以实现。插入,删除等的操作。与vector相比,vector适合尾插和尾删(vector的实现是使用了动态数组的方式。在进行头删和头插的时候后面的数据会进行挪动,时…...
Linux | mdadm 创建软 RAID
注:本文为 “Linux mdadm RAID” 相关文章合辑。 略作重排,未整理去重。 如有内容异常,请看原文。 Linux 下用 mdadm 创建软 RAID 以及避坑 喵ฅ・ﻌ・ฅ Oct 31, 2023 前言 linux 下组软 raid 用 mdadm 命令,multi…...
迁移学习:解锁AI高效学习与泛化能力的密钥
前言 在人工智能(AI)技术日新月异的今天,迁移学习(Transfer Learning)作为一项革命性技术,正深刻改变着机器学习领域的格局。 它不仅让模型能够像人类一样“举一反三”,更在加速模型开发、提升性…...
前端-HTML元素
目录 HTML标签是什么? 什么是HTML元素? HTML元素有哪些分类方法? 什么是HTML头部元素 更换路径 注:本文以leetbook为基础 HTML标签是什么? HTML标签是HTML语言中最基本单位和重要组成部分 虽然它不区分大小写&a…...
STM32之蜂鸣器和按键
一、蜂鸣器的原理与应用 基本概念 蜂鸣器是一种一体化结构的电子讯响器,采用直流电压供电,广泛应用于计算机、打印机、复印机、报警器、电子玩具、汽车电子设备、电话机、定时器等电子产品中作发声器件。 工作原理 蜂鸣器一般分为两类:有源…...
H3C UIS 超融合管理平台原理解读以及日常运维实操与故障处理
前言:超融合(Hyper-Converged Infrastructure, HCI)是将计算、存储、网络和虚拟化资源整合到统一硬件平台中,并通过软件定义技术实现资源池化与灵活管理的架构。H3C(新华三)和华为作为国内领先的ICT厂商&am…...
【强化学习】#5 时序差分学习
主要参考学习资料:《强化学习(第2版)》[加]Richard S.Suttion [美]Andrew G.Barto 著 文章源文件:https://github.com/INKEM/Knowledge_Base 缩写说明 DP:动态规划GPI:广义策略迭代MC:蒙特卡洛…...
Day119 | 灵神 | 二叉树 | 二叉树的最近共公共祖先
Day119 | 灵神 | 二叉树 | 二叉树的最近共公共祖先 236.二叉树的最近共公共祖先 236. 二叉树的最近公共祖先 - 力扣(LeetCode) 思路: 二叉树的最近公共祖先【基础算法精讲 12】_哔哩哔哩_bilibili 首先我们采用后序遍历 递归函数返回值…...
Elasticsearch 性能优化面试宝典
Elasticsearch 性能优化面试宝典 🚀 目录 设计调优 🏗️写入调优 ⚡查询调优 🔍综合设计 💎总结 📝设计调优 🏗️ 面试题1:索引设计优化 题目: 假设需要设计一个电商商品索引,日增数据量1TB,要求支持多维度查询(名称、分类、价格区间)。请说明索引设计的关…...
mysql数据库-中间件MyCat
1. MyCat简介 在整个 IT 系统架构中,数据库是非常重要,通常又是访问压力较大的一个服务,除了在程序开发的本身做优化,如: SQL 语句优化、代码优化,数据库的处理本身优化也是非常重要的。主从、热备、分表分…...
制作大风车动画
这个案例的风车旋转应用了图形变换来实现,速度和缩放比例应用slider来实现,其中图片的速度,图片大小的信息通过State来定义变量管理,速度和和缩放比例的即时的值通过Prop来管理。 1. 案例效果截图 2. 案例运用到的知识点 2.1. 核…...
嘉立创EDA成图:文件管理
在 工程 文 件夹 中 新建 一 个以 自 己选 手 编号 后 8 位 命名 的 项目 工 程文 件 按要求名字命名(这里以日期命名) 选择半离线或者全离线 添加路径 1. 新建 图 纸文 件 ,文 件 名为 moban.elibz; 点击保存之后打开文件夹有这…...