如何将 2 台机器上的 2 个本地 git 存储库合并为一个?
Posted
技术标签:
【中文标题】如何将 2 台机器上的 2 个本地 git 存储库合并为一个?【英文标题】:How to merge 2 LOCAL git repositories on 2 machines into one? 【发布时间】:2016-07-20 23:11:48 【问题描述】:我一直在分别开发一个项目的两个部分,我想将它们合并。我没有将它们中的任何一个推送到远程服务器,但我想要。
要合并的 2 个本地仓库:
Linux PC (SW) 上的软件 Windows PC (FW) 上的微控制器固件我如何最终得到具有这种结构的单个存储库?
项目 | +----fw | +----sw
如果可能,保留 SW 和 FW 的历史记录?
This article 解释了类似的情况。但我想知道我是否可以这样做,只设置一个遥控器,例如:
-
从 Linux 推送 SW 到远程
将 SW 从 Windows 克隆到新目录中
创建一个名为 merge-fw 的分支
从本地目录拉FW → 语法是什么
对于git-pull 中的 repository 参数???
将merge-fw 合并到master
谢谢。
【问题讨论】:
【参考方案1】:让我们假设 Windows 存储库暂时成为主存储库。
在 Linux 存储库中
确保您的所有源都位于sw
目录下,如果需要move files 和git commit
这些更改。新建分支merge-to-windows
:
mkdir sw
mv !(sw) sw # needs extglob set (shopt -s extglob)
git add . && git commit -m "move all sources to sw"
git checkout -b merge-to-windows
在 Windows 存储库中
确保所有源都位于fw
目录下,如果需要移动文件和git commit
这些更改
将新远程添加到指向您的 Linux 存储库的 Windows 存储库
git remote add linux <path to your linux machine>
使用
获取您的 Linux 存储库的当前状态git fetch linux
合并你的 linux repo 的 merge-to-windows
分支
git merge linux/merge-to-windows
现在您在 Windows 上的 master
分支保存了 sw
和 fw
的历史记录。我们可以将这个状态推回到 Linux 上的master
分支
git push linux master:master
完成
【讨论】:
太好了,我工作了!虽然有点离题,但这个related post on git remote add 语法可能会帮助像我这样的菜鸟。以上是关于如何将 2 台机器上的 2 个本地 git 存储库合并为一个?的主要内容,如果未能解决你的问题,请参考以下文章
是否可以在 2 台机器上使用相同的 ssh 私钥/公钥对来访问 git 存储库?