【问题标题】:Combine two git repositories into one higher level repository将两个 git 仓库合并为一个更高级别的仓库
【发布时间】:2022-12-16 04:44:15
【问题描述】:

我的项目包含两个文件夹,每个文件夹都有自己的存储库:

project/
|--frontend/
|--|--.git
|--backend/
|--|--.git

到目前为止,我已经在本地处理过它们。现在我想为我的项目创建一个全局存储库,以将其推送到远程,同时在其中保存两个历史记录。正确的做法是什么?

project/
|--.git - has entire history of project (both folders)
|--frontend/
|--|--.git - can be deleted if method requires it
|--backend/
|--|--.git - can be deleted if method requires it

【问题讨论】:

    标签: git git-merge git-history


    【解决方案1】:

    我怀疑你可以通过移动每个路径并将一个路径合并到另一个路径来做到这一点

    这假定将前端添加到后端存储库是可取的,尽管这可能不是您的情况 - 如果创建新存储库,请重复每个步骤

    警告我还没有测试过这个

    备份您的存储库

    cp -r project project.bak  # FIXME targz
    

    检查自定义分支(在后端)

    (frontend)% git checkout -b custom-move-frontend
    (backend)% git checkout -b custom-move-backend
    

    更新遥控器,使它们属于同一个存储库

    从每个人那里得到遥控器

    (frontend)% git remote -v  # display remote URL
    (backend)% git remote -v
    

    更新后端的远程

    (backend)% git remote set-url origin "$FRONTEND_REMOTE"
    

    将每个的内容移动到其未来的名称中

    (frontend)% git mv . ./frontend
    (frontend)% git add .
    (frontend)% git commit -m "MY UPDATE TEXT FRONTEND"
    (frontend)% git push  # original URL
    
    (backend)% git mv . ./backend
    (backend)% git add .
    (backend)% git commit -m "MY UPDATE TEXT BACKEND"
    (backend)% git push  # branch is pushed to frontend's URL
    

    加入不相关的历史

    分支机构没有共同的历史

    Git refusing to merge unrelated histories on rebase

    (frontend)% git pull
    (frontend)% git checkout -b custom-merge-merge  # from custom-move-frontend
    (frontend)% git merge --allow-unrelated-histories origin/custom-move-backend
    

    存储库现在已合并


    临时演员

    我强烈建议添加一个文件,其中包含有关发生的事情以及特定提交的注释

    为您的提交加上一个唯一的字符串前缀可能会帮助您稍后找到它们

    【讨论】:

      猜你喜欢
      • 2019-03-10
      • 1970-01-01
      • 2013-09-28
      • 1970-01-01
      • 2019-06-22
      • 1970-01-01
      • 1970-01-01
      • 2013-10-03
      • 1970-01-01
      相关资源
      最近更新 更多