前言
如何使用代码仓库同时管理多个项目? 我之前写个人项目一般是一个代码仓库管理一套代码、这样随着项目增加、代码仓库就会越来越多。如果是前后端分离的项目,前端一个仓库,后端代码又一个仓库,很不方便管理。之前也写过一篇文章关于一个代码仓库如何管理多个项目,但是那个管理方式有个很大的弊端,在提交代码的时候,所有项目的代码都是提交在一个历史线上。而不是每个项目单独管理
这一篇文章将会彻底解决这个问题、网上我也查看了蛮多方法。感觉写的都不是很详细。我这里不仅会给出详细的方法、还会用实际代码验证。以及代码实战运用可能会遇到的问题。
我这里以GitHub为例
前提
讲解一下今天的主角:orphan
使用参数 --orphan,这个参数的主要作用有两个,一个是拷贝当前所在分支的所有文件,另一个是没有父结点,可以理解为没有历史记录,是一个完全独立背景干净的分支。
git checkout --orphan的核心用途是在非新存储库上以类似git init的状态创建分支.
如果没有此功能,您的git分支的 all 将会有一个共同的祖先,即您的最初提交.这是很常见的情况,但绝不是唯一的情况.例如,git允许您将多个独立项目作为单个存储库中的不同分支进行跟踪.
1、创建代码仓库
如果不知如何创建代码仓库、请看我之前写的一篇博客:
一文教会你 如何在Github中创建仓库?
创建好的代码仓库
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、不同分支代码改变、互不影响
像开发单个工程一样、不需要考虑其它工程代码改变带来的影响。
这个是之前一个代码仓库管理多个项目、很大的弊端。其中一个项目的代码改变、如果没有及时提交。其它项目提交代码的时候就会将这个未提交的一块提交。而且文件变化带来的影响也是很麻烦。很不利于开发。