【Git教程】(十九)合并小型项目 — 概述及使用要求,执行过程及其实现,替代解决方案 ~

news2024/11/15 17:58:35

Git教程 · 合并小型项目

  • 1️⃣ 概述
  • 2️⃣ 使用要求
  • 3️⃣ 执行过程及其实现

在这里插入图片描述

在项目的初始阶段,往往需要针对重要的设计决策和技术实现原型实验。当原型评估结束后,需要将那些成功的原型合并起来称为整个项目的初始版本。

在这样的情景中,各个原型会分散在不同的版本库中有不同的版本。当整个项目启动时,最好建立一个公共版本库,将不同原型中的文件合并到这个版本库中。

考虑另外一种情景,项目的初始版本过分模块化并且版本独立。随后会出现相同的修改需要在不同的版本库中同步执行,并且修改文件需要在不同版本库中相互转移。将它们合并到同一版本库也可以解决这个问题。
本章的工作流会演示在Git 中合并多个版本库,同时:

  • 保留所有文件的历史版本;
  • 保留所有版本库的标签。

1️⃣ 概述

这段工作流可执行的基础是Git支持使用fetch命令将提交从多个版本库导入同一版本库中 。Git 并不要求被合并导入的提交拥有共同的源版本。

在这里插入图片描述

如图顶部所示后端 (backend) 和前端 (ui) 两个版本库将作为待合并的项目示例。
将所有提交导入到同一版本库之后,将会产生两套不同提交历史。如果切换至后端或者前端项目某一个特定的历史版本提交,那么工作区只会显示被选取项目的文件。

创建公共项目中重要的一步是使用 merge 命令合并那些不相关的历史提交。为了准备合并,有必要为现有的每个项目创建一个新的根目录,并把它们当前所有文件移到该根目录下(新文件目录分别命名为backend 和 ui) 。合并之后,公共项目的根目录将包
含两个子目录 ( backend 和 ui), 如图底部所示。


2️⃣ 使用要求

不同的标签:每个项目都需要有不同的标签名。如果不同的项目中含有相同的标签,必须将它们删除或者重新创建一个独特唯一的标签名。

许多项目,每一个都有独立的版本库,需要将它们合并到一个公共的版本库中,并保留各自的提交历史。


3️⃣ 执行过程及其实现

随着接下来的操作步骤,将演示两个版本库 (前端和后端) 的合并。合并前每个版本库都有一个主分支。合并后将只有一个版本库和一个主分支。

  • 第1步:创建一个主版本库
    首先,克隆后端版本库而创建一个新的公共版本库,并切换至新的工作区。

    > git clone backend common
    > cd common
    
  • 第2步:将文件移到该项目专属文件目录下
    创建一个名为 backend 的后端项目文件目录,可以避免合并前端项目时的文件冲突。

    > mkdir backend
    

    接着,将所有的文件移到这个文件夹中,可以使用 mv 命令来执行这一操作。文件和文件目录的整理属于操作系统层面的操作,也需要在Git系统中使用addrm 命令,将添加和删除文件的操作纳入到待提交修改中。

    > git mv src test backend
    

    最后,操作完成,使用 commit 命令提交修改。

    > git commit -m "backend directory created"
    
  • 第3步:导入另一个版本库
    为了导入前端版本库,首先在公共版本库中创建一个新的远程端点。

    > cd common
    > git remote add ui ../ui/
    

    使用 fetch 命令,将前端版本库所有的Git 对象(包括分支、标签、版本提交)导入公共版本库中。

    > git fetch ui
    

    注意! 如果待导入的前端版本库中的标签已经在公共版本库中存在同名标签,那后导入的标签将被忽略。

  • 第4步:将导入的文件移到该项目专属文件目录下
    下一步,为导入的项目文件创建一个名为ui 的前段项目文件目录。由于首先导入的后端项目已存在 master 分支,需要为前端项目中同名的 master分支另外创建一个本地分支名,在 此命名为 uimaster。

    > git checkout -b uimaster ui/master
    

    上述参数分别代表如下含义。

    • -b: 创建一个新分支并设为活动分支。
    • uimaster: 本地分支名。
    • ui/master: 引用远程版本库ui 中的 master 分支。

    如同上文第 2 步中操作步骤,创建前端项目文件目录并将项目文件移至该目录下。

    > mkdir ui
    > git mv src test ui
    > git commit -m "ui directory created"
    
  • 第5步:合并项目
    在两个项目分别导入了公共版本库,并有各自独立的项目文件目录,接下来执行合并操作。
    合并操作在 master 分支上执行,将其设为活动分支。

    > git checkout master
    

    使用 merge 命令将 uimaster 分支合并入 master 分支。因为两个分支中文件在不同的两个文件目录下,所以合并不会发生冲突。

    > git merge uimaster
    

    合并的结果可以由图形化日志 ( log) 命令查看,可以方便地查看到两个独立发展的项目原提交历史。

    > git log --graph --oneline
    e40fcb2 Merge branch 'uimaster'
    |\
    | \\
    | * ace51c9  ui directory created
    | * 40feb24  foo and bar added
    * f8bd134 backend directory created
    * fa1482a bar added
    * bddfa53 foo added
    

    删除专门用来的执行合并操作的临时分支 uimaster。

    > git branch -d uimaster
    

    这样就完成了,合并得到一个公共分支,包含两个项目的全部历史和标签。

可不可以跳过第2步和第4步呢? 为什么要为每个项目创建项目独立的文件目录呢?
如果不创建新的文件目录,那么合并命令执行时将尝试合并两个项目的根目录到一个根目录,并合并其中文件。两个项目中相同的文件将被合并至一个文件并且需要解决冲突。

如果要合并两个前期不相关的项目,那同名同目录文件需要被合成一个文件的情况可能很少见。大多数情况遇到同名文件,需要移动或者重名其中一个来解决冲突。文件系统层面的操作在合并开始前执行比合并过程中执行要容易一些。

本章上述流程阐述了合并项目文件是可以通过为不同的项目创建专属的子文件目录并分别版本化管理来实现的。



温习回顾上一篇(点击跳转)
《【Git教程】(十八)拆分大项目 — 概述及使用要求,执行过程及其实现,替代解决方案 ~》

继续阅读下一篇(点击跳转)
《》

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

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

相关文章

什么是ARP攻击,怎么做好主机安全,受到ARP攻击有哪些解决方案

在数字化日益深入的今天,网络安全问题愈发凸显其重要性。其中,ARP攻击作为一种常见的网络攻击方式之一,往往给企业和个人用户带来不小的困扰。ARP协议是TCP/IP协议族中的一个重要协议,负责把网络层(IP层)的IP地址解析为数据链路层…

Vmvare—windows中打不开摄像头

1、检查本地摄像头是否能正常打开 设备管理器—查看—显示隐藏设备—选中照相机—启动 USB2.0 HD UVC—打开相机查看 2、检查虚拟机的设置 虚拟机—虚拟机—可移动设备—USB2.0 HD UVC—勾选在状态栏中显示 虚拟机—打开windows主机—右小角选中圆圈图标—勾选连接主机 此时…

办公园区建筑科技风效果(html+threejs)

办公楼科技风(Htmlthreejs) 初始化三维场景 function init() {container document.getElementById(container);camera new THREE.PerspectiveCamera(65, window.innerWidth / window.innerHeight, 0.1, 150000000);camera.position.set(550, 600, 690);scene new THREE.Sce…

MES系统追溯管理功能,迅速定位问题源头

一、MES系统概述 MES系统是一种实现车间生产智能化、信息化的管理系统,通过对生产现场的数据进行实时采集、处理和分析,为企业管理者提供准确、及时的生产信息。MES系统主要包括生产订单管理、物料追溯、质量管理、设备管理、物料管理、人员管理等功能模…

探索数据结构(让数据结构不再成为幻想)

目录 什么是数据结构 数据与结构 什么是算法 复杂度分析 时间复杂度与空间复杂度 时间复杂度 思考: 空间复杂度 常数阶O(1) 对数阶O(logn) 线性阶O(n) 以下为空间复杂度为O(n) 线性对数阶O(nlogn) 平方阶O(n) 指数阶O(2^n) 什么是数据结构 数据结构…

Python送你小花花

快到520了,准备好送上你的爱意了吗? 还记得去年从网上模仿了一篇python使用turtle画的小花花程序,当时还没有转行到程序员行业,刚刚入门学习编程,还在纠结是学习python、Java还是C#的时候。 总会被一些猎奇的内容吸引&…

uniapp如何打包预约按摩H5?

uniapp如何打包预约按摩H5? 开发工具:HBuilderX 一、如何修改域名配置? 1、修改公众号AppID、页面访问路径 1)gzh_appid: 公众号AppID siteroot: 域名,需更换为你自己的域名以及公众号APPID,域名格式【htt…

雍禾植发张东宏:以诚相待毛发患者

医学道路上的奋斗往往需要坚定的信念和不懈的努力。对于张东宏医生来说,医学并非止步于书本知识,而是一次次与患者对话、一次次实操中的历练和积累。在他的成长历程中,医学之路如同一棵参天大树,每一步都是扎实的打磨,…

windows设置Redis服务后台自启动

问题 在日常开发过程中,redis是我们常用的缓存工具,但是由于redis对于Linux系统进行开发的,在Linux系统里可以通过修改redis.conf从而从而实现后台启动。 daemonize no 改成 daemonize yes 但是在window上如何也进行后台运行呢&#xff0c…

Arduino红外遥控器,控制继电器水泵

我们将讨论如何使用Arduino和IRremote库来实现通过红外遥控器控制继电器的开关。通过这个项目,你将学会如何接收和解码红外信号,并根据接收到的信号控制继电器(这里的继电器可以换成其他传感器)的状态。 项目简介 我们将使用Ard…

自由职业是种怎样的体验?普通人如何成为一名自由职业者?

自由职业在哪都能办公自由职业在哪都要办公。 放弃幻想,没有不辛苦的工作,5年经验后端开发程序员,已经从事自由职业1年半,今天就来客观分享一下自由职业的利与弊。 时间自由,减少中间商赚差价 自由职业最让人羡慕的就…

探秘Web3科技:科技变革的下一个风口

引言 随着互联网的发展,我们正处于一个数字化时代,而Web3技术被认为是数字革命的下一个风口。相较于传统的Web2,Web3技术以其去中心化、安全可信的特点,正在引领着科技变革的潮流。本文将深入探讨Web3科技,揭示其背后…

泽攸科技无掩模光刻机:引领微纳制造新纪元

在当今科技迅猛发展的时代,微纳制造技术正变得越来越重要。泽攸科技作为这一领域的先行者,推出了其创新的无掩模光刻机,这一设备在微电子制造、微纳加工、MEMS、LED、生物芯片等多个高科技领域展现出了其独特的价值和广泛的应用前景。 技术革…

C#实现各种Hash计算

C#实现各种Hash计算 文章目录 C#实现各种Hash计算涉及框架及库目前支持可计算的类型核心代码完整可运行代码 BCrypt总结 涉及框架及库 自己在NuGet管理器里面安装即可 BouncyCastle.Cryptography:是加密算法和协议的.NET实现。 目前支持可计算的类型 BLAKE2B_16…

Laravel中使用MinIO进行文件操作及ZIP解压

Laravel中使用MinIO进行文件操作及ZIP解压指南 介绍 在本指南中,我们将详细介绍如何在laravel框架中操作minio,包含方法有:桶列表,创建桶,修改桶,上传文件,删除文件,生成直传链接&…

【全开源】JAVA语聊大厅语音聊天APP系统源码

语聊大厅语音聊天源码:打造专属的语音社交平台 核心功能 多人语音聊天:支持多人同时在线语音聊天,用户可以创建或加入不同的聊天室,与好友或陌生人进行实时互动。语音转文字:提供语音转文字功能,方便用户…

Folder Icons for Mac v1.9激活版:自定义文件夹图标

在追求个性和品味的今天,Folder Icons for Mac 让您的Mac桌面焕然一新。支持多种格式的图片和图标文件,满足您不同的审美需求。同时,软件提供丰富的图标库和模板,让您在定制文件夹图标时更加得心应手。Folder Icons for Mac 不仅能…

react 图片没有加载出来的问题

react 图片没有加载出来的问题 我原来是这样写的 <Layout><Sider><imgsrc"../images/login/topdivbg20221202.png"/></Sider><Content><Menu onClick{onClick} selectedKeys{[current]} mode"horizontal" it…

欣赏一个尚未关闭的python运行时bug

这是一个语言的运行时错误&#xff0c;在linux环境&#xff0c;跨语言使用共享内存时&#xff0c;会触发。它会在python程序退出时&#xff0c;自行销毁sharedMemory&#xff0c;即便此时还有其他的进程在使用——这会让C/Python跨进程调用几乎没有办法进行。 python程序运行完…

华为、小米、魅族都开始造车了!中国还有多少手机厂家要下场造车?2024如果创业适合干什么?2024最适合创业的细分行业

要说现在中国最火、声量最高的创业是什么&#xff1f;那一定是造车&#xff01; 小米这样的手机公司在造车、创维这样的电视家电品牌在造车、甚至就连五粮液这样的白酒品牌也在造车&#xff01;至于其他的还有什么做地产的恒大、做电动车的新日等等&#xff0c;数不数胜。而在手…