git通过fork-merge request实现多人协同

一、问题

对于一个项目,如果需要多人协同开发,大家都在原始仓库中进行修改提交,经常会发生冲突,而且一不小心会把别人的代码内容覆盖掉。为了避免这样的问题,git提供了fork-merge request这样的协同方式。

二、仓库框架模型

  1. 首先git仓库分为远端仓库和本地仓库分别对应上图的remote和local。
  2. source repository表示项目的原始仓库内容,一开始只创建了这一个仓库,是大家进行fork的起点,也是用于构建、发布的仓库。
  3. 每个参与者在source repository的基础上fork一个新的远程仓库user repository,其内容与当前source repository相同,但是他是独立出去的新仓库,后续除非手动更新,否则不会随着source repository同步。
  4. 通过git clone user repository命令,将user repository克隆到本地,也就是local repository。此时local repository只与user repository绑定,而与source repository没有任何直接联系。

并且通过git remote -v可以看到只有一个origin仓库,关联user repository的url。

  1. 之后再通过git remote add origin_src source repository,将source repository与local repository绑定,并设置名称为origin_src(这里名称可以随便取,只要与原有的origin重复即可)。

再通过git remote -v可以看到除了origin仓库外,还有有一个origin_src仓库,关联source repository的url。

至此,仓库就搭建好了,可以在本地进行开发,后续进行提交与合并。

三、开发、提交流程

3.1 提交与合并

  1. 在local repository开发完成后,通过git add和git commit命令完成本地仓库的提交记录。
  2. 然后通过git push origin master命令将local repository的master分支内容推到user repository中。
  3. 然后再从浏览器进入user repository,发起merge request,请求将user repository的master分支内容合并到source repository的某个分支(如master)中。

而在发起这个请求后,并不会直接合并,而是处于待合并的状态,并且可以指定相关人员对合并内容进行审阅,确保合并代码符合规范,并且不会对其他代码造成影响。

除此之外,如果当前内容与source repository内容存在冲突,则需要解决完冲突后才能合并。(需要再本地拉取source repository代码,解决完冲突后重新提交到user repository中,如果之前的merge request没有关闭,则会将当前提交记录更新到刚刚的merge request中,然后就可以合并了。)

  1. 当审阅人员执行合并后,你的提交记录就会被合并到source repository啦。

3.2 更新代码

前面提到我们本地的代码都是直接推到user repository的,而且这个仓库一般仅仅是你自己拥有,所以一般不需要从这个仓库拉取代码(如果需要则使用git pull origin branch).

通常需要拉取的是source repository的内容,包含了其他人员提交的代码内容,拉取方式为:

git pull origin_src master

表示将origin_src仓库(也就是source repository)的master分支拉取到本地的当前分支下。master可以是任意分支名。

之后可以继续在本地开发,或者直接提交到user repository,用于同步source repository的内容。

三、优点

首先是前面提到的在提交merge request之后,有个待合并的状态,可以供他人审查。并且当出现问题时可以关闭当前请求,这是分支开发合并所不具备的。

其次是fork出来的user repository是完全独立的,完全可以在其上开辟新分支、打标签等操作,而不影响source repository,使得source repository更加干净。

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

深度学习4. 循环神经网络 – Recurrent Neural Network | RNN

目录 循环神经网络 – Recurrent Neural Network | RNN 为什么需要 RNN ?独特价值是什么? RNN 的基本原理 RNN 的优化算法 RNN 到 LSTM – 长短期记忆网络 从 LSTM 到 GRU RNN 的应用和使用场景 总结 百度百科维基百科 循环神经网络 – Recurre…

Django(3)-创建第一个数据模型-ORM映射

数据库配置 根目录下settings.py 。这是个包含了 Django 项目设置的 Python 模块。 通常,这个配置文件使用 SQLite 作为默认数据库。如果你不熟悉数据库,或者只是想尝试下 Django,这是最简单的选择。Python 内置 SQLite,所以你无…

糟改押ong韵诗词,末三字改qiao ben zhong

题目给出诗词行的汉语拼音,糟改诗词押ong诗词行末三字“敲笨钟“。 (本笔记适合初通 Python 的 coder 翻阅) 【学习的细节是欢悦的历程】 Python 官网:https://www.python.org/ Free:大咖免费“圣经”教程《 python 完全自学教程》&#xff…

websocket和uni-app里使用websocket

一、HTTP是无状态协议 特点: 1、浏览器发送请求时,浏览器和服务器会建立一个连接。完成请求和响应。在http1.0之前,每次请求响应完毕后,会立即断开连接。在http1.1之后,当前网页的所有请求响应完毕后,才断…

springboot+mp完成简单案例

目录 1.框架搭建 2.前端搭建 3.后端编写 需求&#xff1a;完成简单的连表条件查询以及添加即可 1.框架搭建 1.创建springboot项目 2.相关依赖 <!--web依赖--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boo…

数据库——Redis 没有使用多线程?为什么不使用多线程?

文章目录 Redis6.0 之后为何引入了多线程&#xff1f; 虽然说 Redis 是单线程模型&#xff0c;但是&#xff0c; 实际上&#xff0c;Redis 在 4.0 之后的版本中就已经加入了对多线程的支持。 不过&#xff0c;Redis 4.0 增加的多线程主要是针对一些大键值对的删除操作的命令&a…

00-音视频-概述

有很多场合会使用的音视频&#xff0c;比如安防、视频闸机、影音播放器、视频通话&#xff0c;短视频等等。 从摄像头采集到用户观看&#xff0c;这中间涉及到了很多技术。 用户一般观看的高清视频1080P30帧。若按24位RGB对视频进行存储&#xff0c;一个60分钟视频所占空间 …

大语言模型微调实践——LoRA 微调细节

1. 引言 近年来人工智能领域不断进步&#xff0c;大语言模型的崛起引领了自然语言处理的革命。这些参数量巨大的预训练模型&#xff0c;凭借其在大规模数据上学习到的丰富语言表示&#xff0c;为我们带来了前所未有的文本理解和生成能力。然而&#xff0c;要使这些通用模型在特…

二叉树的层序遍历及完全二叉树的判断

文章目录 1.二叉树层序遍历 2.完全二叉树的判断 文章内容 1.二叉树层序遍历 二叉树的层序遍历需要一个队列来帮助实现。 我们在队列中存储的是节点的地址&#xff0c;所以我们要对队列结构体的数据域重定义&#xff0c; 以上代码 从逻辑上来讲就是1入队&#xff0c;1出队&am…

林【2021】

三、应用 1.字符串abaaabaabaa&#xff0c;用KMP改进算法求出next和nextval的值 2.三元组矩阵 4.二叉树变森林 四、代码&#xff08;单链表递增排序&#xff0c;二叉树查找x&#xff0c;快速排序&#xff09;

springboot整合第三方技术邮件系统

springboot整合第三方技术邮件系统&#xff0c;发邮件是java程序的基本操作&#xff0c;springboot整合javamail其实就是简化开发。不熟悉邮件的小伙伴可以先学习完javamail的基础操作&#xff0c;再来看这一部分内容才能感触到springboot整合javamail究竟简化了哪些操作。简化…

高效实用小工具之Everything

一&#xff0c;简介 有时候我们电脑文件较多时&#xff0c;想快速找到某个文件不是一件容易的事情&#xff0c;实用windows自带的搜索太耗时&#xff0c;效率不高。今天推荐一个用来搜索电脑文件的小工具——Everything&#xff0c;本文将介绍如何安装以及使用everything&…