您的当前位置:首页正文

超详细图解说明:一个代码仓库如何管理多个项目、且代码提交互不影响。orphan分支的使用

2024-11-07 来源:个人技术集锦

前言

如何使用代码仓库同时管理多个项目? 我之前写个人项目一般是一个代码仓库管理一套代码、这样随着项目增加、代码仓库就会越来越多。如果是前后端分离的项目,前端一个仓库,后端代码又一个仓库,很不方便管理。之前也写过一篇文章关于一个代码仓库如何管理多个项目,但是那个管理方式有个很大的弊端,在提交代码的时候,所有项目的代码都是提交在一个历史线上。而不是每个项目单独管理

这一篇文章将会彻底解决这个问题、网上我也查看了蛮多方法。感觉写的都不是很详细。我这里不仅会给出详细的方法、还会用实际代码验证。以及代码实战运用可能会遇到的问题。

我这里以GitHub为例

前提

讲解一下今天的主角:orphan

使用参数 --orphan,这个参数的主要作用有两个,一个是拷贝当前所在分支的所有文件,另一个是没有父结点,可以理解为没有历史记录,是一个完全独立背景干净的分支

git checkout --orphan的核心用途是在非新存储库上以类似git init的状态创建分支.

如果没有此功能,您的git分支的 all 将会有一个共同的祖先,即您的最初提交.这是很常见的情况,但绝不是唯一的情况.例如,git允许您将多个独立项目作为单个存储库中的不同分支进行跟踪.

1、创建代码仓库

如果不知如何创建代码仓库、请看我之前写的一篇博客:

创建好的代码仓库

2、使用方法

2.1 克隆项目到本地

将本地的项目和远程项目建立练习、也可以通过其它的方式建立练习。这里提供较为简单的方式、直接克隆项目到本地

将项目克隆到本地的某个位置

git clone 项目地址

2.2 创建orphan分支

按需创建,我这里需要创建一个 三个分支来单独存放一个项目的后端代码、商家前端、顾客前端。三套代码、所以我要创建三个分支。

总的来说orphan分支的简单使用有以下几个命令:

# 1.创建orphan分支(注意创建了分支必须提交文件到该分支下,否则其实没有创建成功)
git checkout --orphan 分支名
# 2.提交到orphan分支下
git add .
git commit -m"desc"
# 提交三步曲只有这步不一样,需要指定分支
git push origin 分支名(确保一致)
# 3.切换分支,比如切换到golang分支(切换了文件会发生变化,只会显示该分支下的文件)
git checkout golang

我这里演示了创建分支的过程。重点说一下:如果你创建了分支、但是没有提交该分支到远程。你用命令git branch查看分支的时候是看不到刚刚创建的分支。必须提交后才可以、本地创建分支、并且提交后、远程会显示创建的分支的。
用到的一些命令
1、查看分支:git branch. 2、切换分支:git checkout 分支名. 3、添加文件暂存:git add . . 4、提交信息描述:git commit -m '提交信息描述'. 5、提交到远程 git push origin 分支名

2.3 远程仓库分支情况

2.4 将项目代码提交到对应分支

我这里是写好的项目代码、之前是分开放在三个代码仓库、很难维护。这里放到同一个代码仓库。然后将三个项目分别放到对应的代码分支中。

后端一套代码提交到创建的后端代码分支中保存 过程较为简单、切换为该分支后,将要提交的代码添加到该分支、然后 commit 、push到该分支。具体过程如下:


其他分支代码不会改变

提交另外一套代码到代码仓库中

提交另外一套代码、要切换分支。git checkout 分支名.
具体提交过程如下、也可以使用git的可视化工具进行操作,将代码提交到远程分支就行。



2.5 不同分支互不影响


3、遇到的问题

3.1 切换分支后,其它代码不可见?

就当我兴冲冲的打开编辑器查看代码的时候、发现只有当前分支下的代码可见。其它分支的代码则不可见、这就出现一个严重的问题,在进行前后端分离开发的时候,我需要前端和后端工程都打开,现在只能打开一个就不行。具体解决方法看3.2

切换分支后的情况

3.2 解决分支不可见问题(克隆某个分支下代码)

我是另外克隆项目到其它位置,然后单独拉取该分支下的代码。这样就可以解决这个问题。同时、也达到了。可以在不克隆整个项目的情况下、单独克隆某个分支下的代码。这样就可以,在代码仓库中,克隆管理多个项目中的某一个项目。

具体过程
步骤:
1、克隆项目到本地(换个位置)
2、拉取指定分支代码

由于远程已经开好分支,本地直接拉下来即可

git checkout -b feature-branch origin/feature-branch    //检出远程的feature-branch分支到本地

这样就可以看到不同分支下的代码了、也方便自己修改。

前端项目代码

后端项目代码

3.3 Idea文件改动、文件颜色没变

版本控制的一大作用、是方便我们查看项目代码做了那些改动。结果我这里遇到了一点问题、修改代码文件后、文件颜色没有变化。不确定是不是由于之前该项目已经有过版本控制的原因。

4、查看分支代码提交情况

这里后端的历史记录、只会看到当前项目的提交情况。不会关心其它分支的提交情况。

使用Vscode的插件可以看到的更加明的明显,这里是展示了所有分支的代码提交情况。


5、查看远程仓库提交情况


6、不同分支代码改变、互不影响

像开发单个工程一样、不需要考虑其它工程代码改变带来的影响。

这个是之前一个代码仓库管理多个项目、很大的弊端。其中一个项目的代码改变、如果没有及时提交。其它项目提交代码的时候就会将这个未提交的一块提交。而且文件变化带来的影响也是很麻烦。很不利于开发。

Top