失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > [编程开发工具-6]:github仓库 gitee仓库 git本地仓库混合管理的架构与详细实现步骤

[编程开发工具-6]:github仓库 gitee仓库 git本地仓库混合管理的架构与详细实现步骤

时间:2023-05-17 08:42:29

相关推荐

[编程开发工具-6]:github仓库 gitee仓库 git本地仓库混合管理的架构与详细实现步骤

作者主页(文火冰糖的硅基工坊):文火冰糖(王文兵)的博客_文火冰糖的硅基工坊_CSDN博客

本文网址:/HiWangWenBing/article/details/122514538

目录

前言:

第1章 github server、gitee server、git local混合架构

1.1 架构示意图

1.2 理论基础

第2章 建立混合架构案例-A

2.1 需求

2.2 前提条件

2.3仓库的网络架构方案

2.4 方案操作步骤(以yolov5为例)

第3章 建立混合架构案例-B

3.1 需求

3.2 前提条件

3.3 仓库的网络架构方案

3.4 操作步骤

前言:

有时候,我们需要使用他人的开源的repo项目作为基线,开发自己项目的独立于基线的代码,这些代码只限于项目本身,无法回归基线,但是我们有希望时刻能够同步基线的新的功能和新的改动。

这就需要用到多repo混合代码管理架构来组织和管理你的代码了。

如果一开始没有考虑到这种混合架构,后期手工维护代码的成本就比较高。

本文就是探讨这种混合架构的。

第1章 github server、gitee server、git local混合架构

1.1 架构示意图

1. 本地 repo 和远程 repo 是独立存在的 2. 可以建立本地 repor 与远程 repo 之间的关联关系,如下就是本地库与github和gitee的关联关系默认: origin /tianqixin/runoob-git-test(fetch)

origin /tianqixin/runoob-git-test(push) 其中,origin表示起源,本源,指示本地仓库的远程操作,起源于(对应到)哪个远程的仓库。它是remote命令,如fetech或push,在没有指明远程仓库名称的情况下,默认使用orign名称,查找对应的远程仓库的链接。 我们可以修改远程仓库的别名,如下图所示: 修改后:

git remote -vgiteegit@:imnoob/runoob-test.git (fetch)giteegit@:imnoob/runoob-test.git (push)githubgit@:tianqixin/runoob.git (fetch)githubgit@:tianqixin/runoob.git (push)

3. 并非所有的远程 repo 都需要映射到本地 4. 并非所有的本地 repo 都需要映射到远程 5. 一个本地 repo 可以同时映射到 github 和 gitee 6. 一个远程的 repo 也以被多个本地 repo 映射

1.2 理论基础

/git/git-gitee.html

第2章 建立混合架构案例-A

2.1 需求

(1)为了提升效率,基于github某一个已有的repo(如yolo v5)做二次开发 :使用github管理基线代码)

(2)二次开发的新增代码需要有本地的版本管理:使用git进行项目代码本地版本管理

(3)二次开发需要多人协作开发,因此需要通过远程仓库进行协作:使用gitee协作国内开发人员,当然,也可以使用github协作,这里选择gitee,可以建立远程私人仓库。

2.2 前提条件

项目开发人员使用的远程仓库与Base的仓库不在同一个git server上,

比如一个在github,一个在gitee上。

2.3仓库的网络架构方案

通过gitee-user-A的本地仓库进行开发代码与baseline代码的同步。

2.4 方案操作步骤(以yolov5为例)

步骤1:在github上获得yolov5的githu 连接

/ultralytics/yolov5.git

步骤2:在Git Bash命令行下建立gitee和github公共目录

$ mkdir git

步骤3:从github上Clone yolv5的代码,建立本地仓库

$ git clone /ultralytics/yolov5.git

步骤4:检查本地仓库的状态

$ cd yolov5

$ git status

On branch master

Your branch is up to date with 'origin/master'.

nothing to commit, working tree clean

$ git remote -v

origin /ultralytics/yolov5.git (fetch)

origin /ultralytics/yolov5.git (push)

解读:从上述返回状态可以看出,本地仓库git/yolov5的fetch和push操作,关联的远程仓库为:/ultralytics/yolov5.git.

orign是默认的远程仓库的别名。

$ git fetch

fetch命令在不指定远程仓库,则采用默认的orign名称对应的远程仓库。

步骤5:通过web,在gitee server上创建空的仓库,并获取链接

/hiwangwenbing/yolov5-app.git

步骤6:移除默认的远程仓库链接

$ git remote rm origin

$ git remote -v

备注:此时默认的orign的仓库为空

步骤7:把默认的远程仓库修改为新创建就的gitee仓库

$ git remote add origin /hiwangwenbing/yolov5-app.git

$ git remote -v

origin /hiwangwenbing/yolov5-app.git (fetch)

origin /hiwangwenbing/yolov5-app.git (push)

步骤8:为本地仓库增加新的github和gitee仓库链接

$ git remote add gitee /hiwangwenbing/yolov5-app.git

$ git remote add github /ultralytics/yolov5.git

$ git remote -v

gitee /hiwangwenbing/yolov5-app.git (fetch)

gitee /hiwangwenbing/yolov5-app.git (push)

github /ultralytics/yolov5.git (fetch)

github /ultralytics/yolov5.git (push)

origin /hiwangwenbing/yolov5-app.git (fetch)

origin /hiwangwenbing/yolov5-app.git (push)

备注:

目前该本地仓库被同时关联到gitee和github上远程仓库,名字分别为gitee和github,也可以取其他名字,默认关联修改为gitee的远程仓库,名字为origin.

步骤9:自动关联与gitee的SSL连接的证书

$ cd .. #回到当前本地仓库的父目录

$ git clone/hiwangwenbing/yolov5-app.git

备注:虽然,此时远程仓库为空,没有可以clone的仓库,但为本地的机器与远程的gitee准备SSL连接的安全证书,如果没有这个步骤,需要在gitee server上添加SSL的安全证书,比较麻烦。

步骤10:把本地仓库的代码push到gitee的远程仓库中,以便于多人合作开发

$ git push github masterEnumerating objects: 7693, done.Counting objects: 100% (7693/7693), done.Delta compression using up to 8 threadsCompressing objects: 100% (2438/2438), done.Writing objects: 100% (7693/7693), 10.15 MiB | 10.58 MiB/s, done.Total 7693 (delta 5246), reused 7693 (delta 5246), pack-reused 0remote: Resolving deltas: 100% (5246/5246), done.remote: Powered by [GNK-6.2]To /hiwangwenbing/yolov5-app.git* [new branch] master -> master备注:步骤把本地仓库的内容上传到远程仓库中

步骤11:通过命令行查看本地和远程仓库的状态

$ git status

On branch master

nothing to commit, working tree clean

$ git remote show gitee

* remote gitee

Fetch URL: /hiwangwenbing/yolov5-app.git

Push URL: /hiwangwenbing/yolov5-app.git

HEAD branch: master

Remote branch:

master new (next fetch will store in remotes/gitee)

Local ref configured for 'git push':

master pushes to master (up to date)

步骤12:通过网页参看远程仓库的信息

/hiwangwenbing/yolov5-app

备注:此时该仓库处于私有状态,其他合作人员还看到不此代码,需要把相关的开发人员添加开发者. 对于免费的用户,最大只能添加5个开发者。

步骤13:添加合作开发的开发者

管理-> 添加仓库成员

步骤14:分享远程仓库链接

/hiwangwenbing/yolov5-app.git

其他成员可以通过该链接clone远程仓库的代码,修改远程仓库的代码了。

步骤15:在本地添加、修改代码,然后上传代码

(1)检测当前文件的修改状态

$ git status -s

M utils/general.py

?? History.txt

?? data/steelball.yaml

?? data/steelcycle.yaml

?? detect-steelball.py

?? tools/

根据这些信息,可以看出,工作区的变化(无版本管理信息)

修改了一个已有的文件:utils/general.py

新增加文件:History.txt,data/steelball.yaml,data/steelcycle.yaml,detect-steelball.py

新增加一个目录:tools/

(2)把工作变化的、需要版本管理的文件添加到版本控制的临时区(有临时版本信息)

$ git addutils/general.py History.txt data/steelball.yaml data/steelcycle.yaml detect-steelball.py

$ git status -s

A History.txt

A data/steelball.yaml

A data/steelcycle.yaml

A detect-steelball.py

M utils/general.py

(3)设置提交代码时的用户信息

开始前我们需要先设置提交的用户信息,包括用户名和邮箱:

$ git config --global user.name 'robin_wang_wenbing'$ git config --global user.email robin_wang_wenbing@

如果去掉 --global 参数只对当前仓库有效。

(4)正式提交所有修改的文件到本地仓库

$ git commit -m 'the first version of steelball'

[master ed0e364] the first version of steelball

5 files changed, 353 insertions(+)

create mode 100644 History.txt

create mode 100644 data/steelball.yaml

create mode 100644 data/steelcycle.yaml

create mode 100644 detect-steelball.py

$ git status -s

?? tools/

备注:除了tools目录,全部提交

(5)把本地的仓库的内容更新到远程仓库

$ git remote -v

gitee /hiwangwenbing/yolov5-app.git (fetch)

gitee /hiwangwenbing/yolov5-app.git (push)

github /ultralytics/yolov5.git (fetch)

github /ultralytics/yolov5.git (push)

origin /hiwangwenbing/yolov5-app.git (fetch)

origin /hiwangwenbing/yolov5-app.git (push)

这里有三个远程仓库,选择gitee或origin都可以

有两种方法向远程仓库提交代码:

方法1:

$ git push -u gitee master

Enumerating objects: 13, done.

Counting objects: 100% (13/13), done.

Delta compression using up to 8 threads

Compressing objects: 100% (9/9), done.

Writing objects: 100% (9/9), 6.21 KiB | 1.55 MiB/s, done.

Total 9 (delta 5), reused 0 (delta 0), pack-reused 0

remote: Powered by [GNK-6.2]

To /hiwangwenbing/yolov5-app.git

436ffc4..ed0e364 master -> master

Branch 'master' set up to track remote branch 'master' from 'gitee'.

方法2:

$ git remote addgitee /hiwangwenbing/yolov5-app.git

至此,完成了github仓库、gitee仓库、git本地仓库混合部署的架构。

第3章 建立混合架构案例-B

3.1 需求

(1)为了提升效率,基于github/gitee某一个已有的repo(如yolo v5)做二次开发 :使用github/Gitee管理基线代码)

(2)二次开发的新增代码需要有本地的版本管理:使用git进行项目代码本地版本管理

(3)二次开发需要多人协作开发,因此需要通过远程仓库进行协作:使用github/gitee协作国内开发人员.

3.2 前提条件

项目开发人员使用的远程仓库与Base的仓库在同一个git server上,比如都在github或都在gitee上。

3.3 仓库的网络架构方案

通过github-user-A的远程仓库进行开发代码与baseline代码的同步

3.4 操作步骤

......................

作者主页(文火冰糖的硅基工坊):文火冰糖(王文兵)的博客_文火冰糖的硅基工坊_CSDN博客

本文网址:/HiWangWenBing/article/details/122514538

如果觉得《[编程开发工具-6]:github仓库 gitee仓库 git本地仓库混合管理的架构与详细实现步骤》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。