【Git】多人协作

news2025/2/24 11:22:56

文章目录

  • 完成准备工作
  • 多人协作
    • 场景一
    • 场景二
    • 远程分支删除后,本地 git branch -a 依然能看到的解决办法




完成准备工作


在之前,我们所完成的工作如下:

  • 基本完成 Git 的所有本地库的相关操作,git基本操作,分支理解,版本回退,冲突解决等等
  • 申请码云账号,将远端信息clone到本地,以及推送和拉取。

是时候干最重要的一件事情了,实现多人协作开发!

为了做这件事情,我们需要先做一些准备工作。我们之前已经将项目 clone 到了指定目录,如:
在这里插入图片描述
我们在 windows 环境下,再 clone 同一个项目仓库,来模拟和别人一起协作开发:

为了方便,我在这里就使用https的方式 clone 了,首先在Windows下创建一个空目录,点击右键在终端打开
在这里插入图片描述
需要注意的是,这里 clone 时,要先将你所对应的仓库的开源。

我们这里是模拟了两个用户,实际开发中,每个用户都有自己的 gitee/github 账号,如果要多人进行协同开发,必须要将用户添加进开发者,用户才有权限进行代码提交:
在这里插入图片描述
在这里插入图片描述
不同的成员都有不同的权限:
在这里插入图片描述
到此,相当于有了两个用户,分别在linux和windows上针对于同项目进行协作开发,我们的准备工作到此结束。

目前,我们的仓库中只有一个master主分支,但在实际的项目开发中,在任何情况下其实都是不允许直接在master分支上修改代码的,这是为了保证主分支的稳定。所以在开发新功能时,常常会新建其他分支,供开发时进行迭代使用。

那么接下来,就让我们在gitee上新建dev远程分支供我们使用:
在这里插入图片描述
创建成功的远程分支是可以通过 Git 拉取到本地来,以实现完成本地开发工作。

之前讲的 git branch 其实只能查看本地分支,要查看远程分支需要加上 -r 选项。
但前提是要 pull 一下拉取最新的远端仓库,才能看到最新的内容。
在这里插入图片描述

拉取后便可以看到远程的 dev 分支,接着切换到 dev 分支供我们进行本地开发。要说明的是,我们切换到的是本地的 dev 分支,根据示例中的操作,会将本地分支和远程分支的进行关系链接 git checkout -b [本地分支名] [origin/远端分支名]
在这里插入图片描述
这里如果创建了分支,但没有与远端的分支相关联,可以使用如下命令进行关联:

git branch --set-upstream-to=origin/[远端分支名] [本地分支名]

这步操作是在本地创建了一个 dev 分支,并且该分支与远端的 origin/dev 相关联,我们也可以使用命令 git branch -vv 来查看本地与远程分支的相关联信息:
在这里插入图片描述

对于Windows用户来说,操作与上面也是一样的
在这里插入图片描述
现在,我们模拟的两个用户就可以在 dev 上完成开发。

多人协作


场景一

在这里插入图片描述

首先,我先在Linux上的 dev 分支上进行一次开发,并 push 到远程。例如:
在这里插入图片描述
让我们来看看码云上目前仓库的状态:
在这里插入图片描述

至此,我们已经将代码成功推送至码云,接下来假如Windows用户要和Linux用户协同开发,碰巧也要对 file.txt 文件作修改,并试图推送,例如:
在这里插入图片描述

这时推送失败,因为 Windows 用户的最新提交和 Linux 用户推送的提交有冲突,解决办法也很简单,Git已经提示我们,先用 git pull 把最新的提交从 origin/dev 抓取下来,然后,在本地进行合并,并解决冲突,再推送。操作如下:
在这里插入图片描述
解决冲突,重新推送:

在这里插入图片描述
此时,我们看到远端的码云已经能看到我们的新提交了!
在这里插入图片描述
由此,两名开发者已经开始可以进行协同开发了,不断的 git pull/add/commit/push ,遇到了冲突,就使用我们之前讲的冲突处理解决掉冲突。 对于你来说,要想看到别人的代码,只需要 pull 一下即可,例如:
在这里插入图片描述
最后不要忘记,虽然我们是在分支上进行多人协作开发,但最终的目的是要将开发后的代码合并到 master上去,让我们的项目运行最新的代码。接下来我们就需要做这件事情了:

  • 第一步
    切换至 master 分支, 先 git pull 一下,保证本地的 master 是最新内容。合并前这么做是一个好习惯,因为这是多人协作,防止别人先上传了,我们的 master 分支不是最新版的。
    在这里插入图片描述
  • 第二步
    切换至 dev 分支, 合并 master 分至,这么做是因为如果有冲突,可以在dev分支上进行处理,而不是在在 master 上解决冲突。这么做是一个好习惯,千万不要觉得冗余。
    在这里插入图片描述
  • 第三步
    切换至 master 分支,合并 dev 分支
    在这里插入图片描述
  • 第四步
    将 master 分支推送至远端
    在这里插入图片描述
    此时,查看远端仓库,master 已经是最新代码了:
    在这里插入图片描述
    此时,dev 分支对于我们来说就没用了, 那么 dev 分支就可以被删除掉。我们可以直接在远程仓库中 将dev分支删除掉:
    在这里插入图片描述

总结一下,在同一分支下进行多人协作的工作模式通常是这样:

  • 首先,可以试图用 git push origin branch - name 推送自己的修改;
  • 如果推送失败,则因为远程分支比你的本地更新,需要先用 git pull 试图合并;
  • 如果合并有冲突,则解决冲突,并在本地提交;
  • 没有冲突或者解决掉冲突后,再用 git push origin branch - name 推送就能成功!
  • 功能开发完毕,将分支 mergemaster,最后删除分支。

场景二

在这里插入图片描述

一般情况下,如果有多需求需要多人同时进行开发,是不会在一个分支上进行多人开发,而是一个需求或一个功能点就要创建一个 feature 分支。

现在同时有两个需求需要Linux用户和Windows用户进行开发,那么这两个用户便可以各自创建一个分支来完成自己的工作。在上面我们已经了解了可以从码云上直接创建远程分支,其实在本地创建的分支也可以通过推送的方式发送到远端。在这里我们就来用一下这种方式。

Linux用户:

  • 创建本地分支并切换
    在这里插入图片描述
  • 新增需求内容:创建function1文件,将 feature-1 分支推送到远端
    在这里插入图片描述

Windows用户:
在这里插入图片描述

此时,在本地,两个用户看不到对方新建的文档。并且推送各自的分支时,并没有任何冲突,两个用户互不影响,用起来很舒服!

再来看下远端码云上此时的状态:
在这里插入图片描述
对于Linux用户的分支:
在这里插入图片描述
对于 Windows 用户的分支:
在这里插入图片描述
正常情况下,两个用户就可以在自己的分支上进行专业的开发了!

但天有不测风云,Windows用户突然生病了,但需求还没开发完,需要Linux用户帮他继续开发,于是他便把feature-2分支名告诉你了。这时你就需要在自己的机器上切换到feature-2分支帮忙继续开发,要做的操作如下:

  • 第一步
    必须先拉取远端仓库内容
    在这里插入图片描述
  • 第二步
    切换到 feature-2 分支上,可以和远程的feature-2分支关联起来,否则将来只使用 git push 推送内容会失败
    在这里插入图片描述
    切换成功后,便可以看见 feature-2 分支中的 function2 文件了,接着就可以帮Windows用户进行开发,并推送内容:
    在这里插入图片描述
    查看远程状态,推送成功了:
    在这里插入图片描述

这时,Windows用户已经修养得差不多,可以继续进行自己的开发工作,那么他首先要获取到你帮他开发的内容,然后接着你的代码继续开发。或者你已经帮他开发完了,那他也需要在自己的电脑上看看你帮他写的代码:
在这里插入图片描述
Pull 无效的原因是Windows用户没有指定本地 feature-2 分支与远程 origin/feature-2 分支的链接,根据提示,设置feature-2和origin/feature-2的链接即可:
在这里插入图片描述

目前,Windows用户的本地代码和远端保持严格一致。Linux用户和Windows用户可以继续在不同的分支下进行协同开发了…

各自功能开发完毕后,不要忘记我们需要将代码合并到 master 中才算真正意义上的开发完毕。
由于Linux用户和Windows用户率先开发完毕,于是开始merge,这里介绍另外一种方式:
在这里插入图片描述
此时这里就变成了1:
在这里插入图片描述

随后我们点进去:
在这里插入图片描述

到这里就不是开发人员所管理的了,接下来会有专门的人来对你的代码进行查阅与评估:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

当相关的人员做完以上流程我们的分支就合并到了master分支上了
在这里插入图片描述
我们去看看主分支上的文件:
在这里插入图片描述
这个过程是这样的:
在这里插入图片描述

远程分支删除后,本地 git branch -a 依然能看到的解决办法

当前我们已经删除了远程的几个分支,使用git branch -a命令可以查看所有本地分支和远程分支,但发现很多在远程仓库已经删除的分支在本地依然可以看到。例如:
在这里插入图片描述
在这里插入图片描述
使用命令 git remote show origin ,可以查看 remote 地址,远程分支,还有本地分支与之相 对应关系等信息。
在这里插入图片描述
此时我们可以看到那些远程仓库已经不存在的分支,根据提示,使用 git remote prune origin 命令:
在这里插入图片描述
这样就能成功解决了。

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

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

相关文章

邮件安全之发件人伪造

电子邮件工作原理 电子邮件传输过程中主要涉及到SMTP、IMAP、POP3三种协议,具体功能如下: SMTP:全称Simple Mail Transfer Protocol,即简单邮件传输协议,主要用于发送邮件,使用端口号25。 IMAP:全称Internet Mail Acce…

使用 AIStor 和 OpenSearch 增强搜索功能

在这篇文章中,我们将探讨搜索,特别是 OpenSearch 如何帮助我们识别模式或查看不断增长的数据中的趋势。例如,如果您正在查看运营数据,如果您的服务似乎是随机的,那么您需要尽可能回溯以识别模式并找出原因。这不仅适用…

【LLM】R1复现项目(SimpleRL、OpenR1、LogitRL、TinyZero)持续更新

note (1)未来的工作需亟待解决: 支持大规模 RL 训练(PPO、GRPO 等)的开源基础框架用于稳定训练的 GRPO 训练超参的自动化调优RL 训练数据的配比(难度、领域、任务等)基于 Instruct 模型训练 R…

买股票的最佳时机 - 2

买卖股票的最佳时机 III 题目描述&#xff1a; 提示&#xff1a; 1 < prices.length < 1050 < prices[i] < 105 分析过程&#xff1a; 写动态规划&#xff0c;我们需要考虑一下问题&#xff1a; 定义状态状态转移方程初始条件 遍历顺序 4种状态&#xff1a; …

Python基于flask的智慧交通可视化,大数据智慧交通数据可视化系统

博主介绍&#xff1a;✌程序员徐师兄、8年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战*✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447…

【Unity】鱼群效果模拟

鱼群效果模拟 文章目录 鱼群效果模拟Boid算法实现方式version1_CPUversion2_GPUversion3_Multilaterationversion4_Bitonic_Sorting &#xff08;GPU友好&#xff09;version5_Skinning &#xff08;TODO&#xff09; 细节项优化项参考链接 Boid算法 Boid算法是一种模拟群体行…

云图库平台(五)——后端图片模块开发

目录 一、需求分析二、库表设计三、图片的处理如何实现图片的上传和下载创建图片的业务流程如何对图片进行解析 四、创建并使用对象存储五、后端操作对象存储初始化客户端通用能力类文档上传文件下载 一、需求分析 管理员功能&#xff1a; 图片的上传和创建&#xff1a;仅管理…

postman调用ollama的api

按照如下设置&#xff0c;不需要设置key 保持长会话的方法 # 首次请求 curl http://localhost:11434/api/generate -d {"model": "deepseek-r1:32b","prompt": "请永久记住&#xff1a;110&#xff0c;1-12&#xff0c;之后所有数学计算必…

十、OSG学习笔记-多线程(OpenThreads)

上一节内容&#xff1a; 九、OSG学习笔记-NodeVisitor节点遍历器-CSDN博客https://blog.csdn.net/weixin_36323170/article/details/145742756?spm1001.2014.3001.5501 本章节代码&#xff1a; OsgStudy/Openthreads CuiQingCheng/OsgStudy - 码云 - 开源中国https://gite…

DeepSeek 助力 Vue 开发:打造丝滑的单选按钮(Radio Button)

前言&#xff1a;哈喽&#xff0c;大家好&#xff0c;今天给大家分享一篇文章&#xff01;并提供具体代码帮助大家深入理解&#xff0c;彻底掌握&#xff01;创作不易&#xff0c;如果能帮助到大家或者给大家一些灵感和启发&#xff0c;欢迎收藏关注哦 &#x1f495; 目录 Deep…

【行业解决方案篇十八】【DeepSeek航空航天:故障诊断专家系统 】

引言:为什么说这是“航天故障终结者”? 2025年春节刚过,航天宏图突然官宣"DeepSeek已在天权智能体上线",这个搭载在卫星和空间站上的神秘系统,号称能提前48小时预判99.97%的航天器故障。这不禁让人想起年初NASA禁用DeepSeek引发的轩然大波,更让人好奇:这套系…

谷歌浏览器更新后导致的刷新数据无法显示

这几天突然出现的问题&#xff0c;就是我做了一个网站&#xff0c;一直用Google展示&#xff0c;前两天突然就是刷新会丢失数据&#xff0c;然后再刷新几次吧又有了&#xff0c;之前一直好好的&#xff0c;后端也做了一些配置添加了CrossOrigin注解&#xff0c;然而换了edge浏览…

游戏设计模式阅读 - 游戏循环

游戏与普通程序最大的不同点在于&#xff1a; 游戏不像其他大多数软件&#xff0c;游戏即使在没有玩家输入时也继续运行。 如果你站在那里看着屏幕&#xff0c;游戏也不会冻结。动画会持续播放。视觉效果继续闪烁。 如果运气不好的话&#xff0c;怪物会继续暴揍你的角色。 那么…

(五)趣学设计模式 之 建造者模式!

目录 一、 啥是建造者模式&#xff1f;二、 为什么要用建造者模式&#xff1f;三、 建造者模式怎么实现&#xff1f;四、 建造者模式的应用场景五、 建造者模式的优点和缺点六、 总结 &#x1f31f;我的其他文章也讲解的比较有趣&#x1f601;&#xff0c;如果喜欢博主的讲解方…

github 怎么创建一个私有repository 并从另外一台电脑拉取下来更新

1.github上新建一个repository 设置为private tips删除在这 点setting 然后往下拖动 会有个这里是用来删项目的 2.另外 一台电脑拉取这个repository的时候 需要配置 一个ssh key 这个key的内容生成参考本地电脑的生成 然后在这配置 2.1 生成 SSH 密钥&#xff08;如果还没有…

DeepSeek-R1本地化部署的硬件要求

DeepSeek-R1本地化部署的硬件要求全解析 引言 DeepSeek-R1作为一款高效的AI推理模型&#xff0c;凭借其卓越的推理性能和灵活的训练机制&#xff0c;成为了春节期间的热议话题。 然而&#xff0c;要在本地成功部署DeepSeek-R1&#xff0c;尤其是其满载的 671B 参数版本&#…

AGI觉醒假说的科学反驳:从数学根基到现实约束的深度解析

文章目录 引言:AGI觉醒论的核心迷思一、信息论视角:意识产生的熵约束1.1 香农熵的物理极限1.2 量子退相干的时间屏障二、数学根基:形式系统的自指困境2.1 哥德尔不完备定理的现代诠释三、概念解构:AGI觉醒假说的认知陷阱3.1 术语混淆的迷雾3.2 拟人化谬误的认知根源四、意识…

CSS—盒模型(3分钟结合示例精通盒模型)

个人博客&#xff1a;haichenyi.com。感谢关注 1. 目录 1–目录2–概念3–内容4–内边距5–边框6–外边距7–类型 概念 在HTML中&#xff0c;每一个元素都可以看作一个矩形的盒子。如图 如上图所示&#xff0c;一个一个的矩形都可以堪称一个元素。矩形有大有小&#xff0c;边有…

蓝桥杯 3.搜索

蓝桥杯 3.搜索 文章目录 蓝桥杯 3.搜索DFS回溯DFS剪枝记忆化搜索编程66-75 DFS回溯 回溯法简介 使用**DFS(深度优先搜索)**实现, DFS是一种遍历或搜索图, 树或者图像等数据结构的算法, 当然这个图, 树未必要存储下来(隐式处理就是回溯法)搜索树一般是排列型搜索树 (总节点个数…

STM32的“Unique device ID“能否修改?

STM32F1系列的"Unique device ID"寄存器的地址为0x1FFFF7E8。 这个寄存器是只读的。 "Unique device ID"寄存器位于“System memory”中。“System memory”地址范围为“0x1FFF F000- 0x1FFF F7FF”。 所有STM32 MCU上都存在系统引导加载程序。顾名思义&a…