六个仓库合并为一个仓库,保留master和develop分支的bat脚本

利用git subtree可以实现多个仓库合并为一个仓库,手动操作起来太麻烦了,今天花了点时间写了一个可执行的脚本,现在操作起来就方便多了。

1、本地新建setup.bat文件

2、用编辑器打开(我用的是Notepad++)

3、把下面代码复制进去

下面是六个代码仓库(在远程仓库,需要拉取)拉取合并为一个仓库的脚本,根据实际情况修改合并后目录、仓库地址等

@echo off
setlocal enabledelayedexpansion

:: 1. 强制清理旧目录
:: project-dir是合并后目录
set projectdir=project-dir
rd /s /q %projectdir% 2>nul
mkdir %projectdir%
cd %projectdir%

:: 2. 初始化仓库并创建 master 分支
git init
git commit --allow-empty -m "Initial empty commit (master)"

:: 3. 添加子项目远程仓库
:: 目录和仓库地址都是虚假替代的
git remote add dir1 https://gitee.com/3539949703/dir1.git
git remote add dir2 https://gitee.com/3539949703/dir2.git
git remote add dir3 https://gitee.com/3539949703/dir3.git
git remote add dir4 https://gitee.com/3539949703/dir4.git
git remote add dir5 https://gitee.com/3539949703/dir5.git
git remote add dir6 https://gitee.com/3539949703/dir6.git

:: 4. 定义子项目列表
set "subprojects=dir1 dir2 dir3 dir4 dir5 dir6"

:: 5. 在 master 分支添加子项目的 master 分支
for %%i in (%subprojects%) do (
    git subtree add --prefix=%%i %%i master --squash
)

:: 6. 创建 develop 分支
git checkout --orphan develop
git reset --hard
:: 确保 develop 分支有初始提交
git commit --allow-empty -m "Initial empty commit (develop)"

:: 7. 添加子项目的 develop 分支
for %%i in (%subprojects%) do (
    git subtree add --prefix=%%i %%i develop --squash
)

endlocal

pause

4、打开Git Bash客户端,执行./setup.bat,就完成合并为一个仓库的任务。


5、查看了下提交的代码,做了两次commit提交,感觉git commit --allow-empty -m "Initial empty commit (master)"git commit --allow-empty -m "Initial empty commit (develop)"这两次提交没有必要,所以更新了下合并脚本,如下:

@echo off
setlocal enabledelayedexpansion

set projectdir=maven-project
cd %projectdir%

set "subprojects=dir1 dir2 dir3 dir4 dir5 dir6"

:: 更新 master 分支
git checkout master
for %%i in (%subprojects%) do (
    :: 强制重置子项目目录
    git checkout HEAD -- %%i
    :: 强制拉取远程代码(丢弃本地修改)
    git subtree pull --prefix=%%i %%i master --squash --force
)

:: 更新 develop 分支
git checkout develop
for %%i in (%subprojects%) do (
    :: 强制重置子项目目录
    git checkout HEAD -- %%i
    :: 强制拉取远程代码(丢弃本地修改)
    git subtree pull --prefix=%%i %%i develop --squash --force
)

endlocal

pause

6、合并后,同事又继续提交代码到旧仓库,所以就又写了一个更新代码的脚本,命名为update.bat,源码放在下面,执行步骤跟setup.bat一样,不赘述了。

@echo off
setlocal enabledelayedexpansion

set projectdir=ewp-cloud
cd %projectdir%

set "subprojects=dir1 dir2 dir3 dir4 dir5 dir6"

:: 更新 master 分支
git checkout master
for %%i in (%subprojects%) do (
    :: 强制重置子项目目录(丢弃本地修改)
    git checkout HEAD -- %%i
    :: 拉取远程代码(去掉 --force)
    git subtree pull --prefix=%%i %%i master --squash
)

:: 更新 develop 分支
git checkout develop
for %%i in (%subprojects%) do (
    :: 强制重置子项目目录(丢弃本地修改)
    git checkout HEAD -- %%i
    :: 拉取远程代码(去掉 --force)
    git subtree pull --prefix=%%i %%i develop --squash
)

endlocal

pause

在这里插入图片描述

### 回答1: masterdevelop分支Git版本控制系统中的两个重要分支。它们的区别在于: 1. master分支是主分支,通常用于存储稳定版本的代码。在开发过程中,当一个功能或修复被完成并测试通过后,它会被合并master分支中。因此,master分支上的代码应该是可靠的、稳定的、可发布的。 2. develop分支是开发分支,通常用于存储正在开发的代码。在开发过程中,新的功能修复会被合并develop分支中。因此,develop分支上的代码可能是不稳定的、不可靠的、不可发布的。 总之,master分支是用于发布稳定版本的,而develop分支是用于开发新功能修复问题的。在开发过程中,开发人员应该在develop分支上工作,并将代码合并master分支中进行发布。 ### 回答2: 在软件开发过程中,版本控制系统扮演了至关重要的角色。版本控制系统可以追踪代码的变化,协作工作,协助各个团队成员协作开发代码维护,同时还可以保证代码的质量稳定性。在版本控制系统中,分支一个非常重要的概念,它们帮助团队成员隔离代码,分散工作协作。 Master分支一个稳定代码的主分支。在开发过程的早期,它只包含稳定的代码。开发者写代码并且在功能完成后提交到主分支Master分支被认为是生产代码的分支。这是因为它包含经过充分测试准备的代码。开发者不应该从Master分支中提取资料,而应该把代码合并Master分支Develop分支是必须的,因为它允许更好的团队协作,并帮助避免冲突。Develop分支是相对不稳定的,它是开发的中央分支。它不会包含新功能或修复错误,而是要求代码处于半成品状态。开发者可以从Develop分支中提取其他开发人员的更改并将其合并到自己的分支中。Develop分支的好处之一是,开发人员可以在Devlop分支中自由地测试新功能其他性能优化,而Master分支保持不变。 Master分支是用于部署的分支Develop分支则是用于开发的分支。当新的功能被添加到Develop分支中,开发人员需要测试它是不是能够正常地工作,有没有错误。如果在测试过程中发现了错误,开发人员可以对其进行修复,然后将其提交到Develop分支。 当开发团队认为Develop分支已经完全就绪并且可以发布新的版本时,代码将被合并Master分支中,随后就可以进行发布了。Merge到Master分支之前,开发人员还需要进行充分的测试,确保代码的完整性,可靠性稳定性。也就是说,Master分支是发布代码,Develop分支是开发代码的主要分支。 ### 回答3: MasterDevelopGit分支中的两种基本分支类型,它们的作用不同,用途也不同。 Master分支Git存储库中的主分支,也是默认分支,用于存储系统的稳定版本。每当开发人员完成一次重要的任务,或者在一个稳定的版本上对累积的更新进行了总结时,都应该将此分支上的代码打上标签,用以标记里程碑或版本号。 Develop分支是在Master分支之上的分支,作为团队协作创建新功能、更改修复bug的地方。它时刻保持着最新的代码,并反映出开发团队的最新工作状态。在Develop分支上,开发人员可以随时添加一些新的功能,并对它们进行测试。一旦新功能的开发完成,并经过充分测试,就可以将它合并Master分支上,打上版本号。 因此,两个分支之间的区别在于Master分支用于发布可靠的代码,而Develop分支则用于开发新代码。从使用角度来看,团队成员可以在分支上独立开发,然后在开发工作的每个阶段把自己的变化合并Develop分支。当Develop分支成熟时,成员将把它合并Master分支上,从而发布稳定版本。 Master分支Develop分支Git分支管理中具有不同的作用,开发人员可以接受恰当的方式来利用这些分支,以确保他们的工作在生产环境中始终稳定可靠。这两个分支必须正确配合,以便开发人员能够为项目提供可靠的代码,同时满足项目需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员buddha2080

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值