github 做项目代码迁移、整理

描述与需求

旧仓库-A1
旧仓库-A2
新仓库-A3
用户前端
管理前端
后端代码
src 目录
其他

如图上,目前已有旧仓库A1,A2,且均已放到对应的目录下,仓库中分别包含用户侧和管理侧的前端代码。现需要新建一个仓库A3。
具体要求如下:

  • 要求保留各个仓库迁移前的commits 记录,最好还能对命名不规范的项目进行重命名

思路与过程

  1. 【新增】调整现有目录结构以适应当前目录

如果不调整现有的目录结构,那么在后续合并的过程中给可能会导致文件重合。简单来说就是有问题。(给我整没话说了)

旧仓库-A1
旧仓库-A2
新仓库-A3
用户前端
管理前端
后端代码
target-原 src 目录
src
其他
  1. 初始化新仓库A3
git init
# 创建自述文件、添加到A3仓库:初始化main分支
echo "">README.md
git add README.md
git commit -m 'README.md'
# 查看分支
git branch

在这里插入图片描述
在这里插入图片描述

  1. 将旧仓库A1,A2添加到A3的远程仓库里
# 添加远程版本库
# git remote add [shortname] [url]
git remote add A1 ./src/front_end_kids/
git remote add A2 ./src/front_end_parents/
# 显示所有远程仓库
git remote -v

在这里插入图片描述

  1. 获取远程仓库的代码
# git fetch [alias] 用于从远程获取代码
git fetch A1
git fetch A2

在这里插入图片描述
通过输出可以看到两个分支地址,分别是:A1/masterA2/main

  1. 在A3仓库中创建辅助分支a1、a2
# git checkout 命令用于切换分支或恢复工作树文件
# git checkout -b 在新建分支的同时切换分支
# git checkout -b [local_branch] [remote_branch]
# 从远程分支中取得本地分支
git checkout -b a1 A1/master
git checkout -b a2 A2/main

在这里插入图片描述
4. 合并新仓库的master、a1、a2 三个分支

# 列出所有分支
git branch
# 切换到主分支
git checkout master
# 合并辅助分支
# git merge 合并分支 --allow-unrelated-histories 允许合并无关的历史提交
git merge a1 --allow-unrelated-histories
git merge a2 --allow-unrelated-histories

在这里插入图片描述

总结

将在新仓库作为远程库拉取到本地库的一个分支(辅助分支),然后将辅助分支和主分支合并。1

错误

直接构建新仓库

在这里插入图片描述
原因分析:

git add不能添加的嵌入的git仓库

git submodule是什么

Git 工具的 submodule 功能就是建立了当前项目与子模块之间的依赖关系:子模块路径、子模块的远程仓库、子模块的版本号

直接拉取远程分支导致文件位置错乱

直接拉取的时候,会直接将a1分支的文件内容放到A1仓库的根目录,会直接导致整个仓库的目录结构混乱。这是因为在git remote add的时候,存入分支的路径为/代码,而git merge的时候,是直接将辅助分支的内容放到master的根目录下。P.S. git merge可以merge到master分支的指定位置吗?2

git checkout master # 切换需要撤销、恢复的分支
git reflog # 查看历史版本号
git reset --hard [merge前的版本号] #将本地代码回退到指定版本

在这里插入图片描述


  1. 多个git仓库 合并 ↩︎

  2. Git 分支 - 分支简介
    所以在开始之前,需要新增了一项准备工作。
    在这里插入图片描述
    解决办法:撤销merge3 ↩︎

  3. Git怎样撤销一次分支的合并Merge ↩︎

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

caesarding

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

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

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

打赏作者

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

抵扣说明:

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

余额充值