git - 不相关 repos 的 Git 合并是否需要特定版本的 Git?
问题描述
我正在尝试重新组织我的代码目录并合并两个不相关的 Git 存储库。两个仓库都是本地的。
我在这里发现了一个类似的问题:如何合并两个 Git 存储库?
...但解决方案对我不起作用。我在评论部分对此进行了询问,另一位用户建议我将我的问题作为一个单独的问题提出。
我创建了一个测试/沙盒环境来测试解决这个 Git 合并问题。我的设置是:
/home/dir01/merge_repos # this is the sandbox dir
|
/home/dir01/merge_repos/old_dir_01/old_repo # git init was done here; .git directory exists here
/home/dir01/merge_repos/old_dir_01/old_repo/source_file_01.py
/home/dir01/merge_repos/old_dir_01/old_repo/source_file_01.py
|
/home/dir01/merge_repos/new_repo # git init was also done here.
我想将 old_repo 中的文件与 new_repo 中的 Git 存储库合并。
根据原始问题中提供的解决方案,我执行了以下操作:
我在 new_repo 下创建了一个虚拟文件,然后对该虚拟文件进行了 git add 和 git commit。
在 new_repo/ 目录中,我发出 >
git remote add old_repo /home/dir01/merge_repos/old_dir_01/old_repo
git fetch old_repo --tags
git merge --allow-unrelated-histories old_repo/master
在第 4 步,Git 抱怨这--allow-unrelated-histories
是一个未知选项。
所以我尝试了git merge
没有 --allow-unrelated-histories 选项。这没有用;Git 抱怨fatal: old_repo/master - not something we can merge
.
我的问题是,我可以使用低于 v2.9 的 Git 版本对两个不相关的 Git 存储库进行 Git 合并吗?
我正在使用 Git v1.8.3.1。
解决方案
要跟进我最初的问题,不,您不需要特定版本的 Git 来进行 Git 合并。
对于 v2.9 或更高版本的 Git,Git 提供了该--allow-unrelated-histories
选项。所以你按照这里的回答去做:你如何合并两个 Git 存储库?
cd path/to/project-b
git remote add project-a /path/to/project-a
git fetch project-a --tags
git merge --allow-unrelated-histories project-a/master
git remote remove project-a
对于不支持该--allow-unrelated-histories
选项的 Git 版本,您仍然可以进行 Git 合并,但略有不同。
cd path/to/project-b
git remote add project-a /path/to/project-a
git fetch project-a # Don't use the --tags option
git merge project-a/master # Don't use the --allow-unrelated-histories option
git remote remove project-a
感谢@paulsm4 的回答。
推荐阅读
- typescript - 开玩笑 - 有没有办法断言完整的 JSON 响应数据结构,几乎没有例外来处理 JSON 中的动态值?
- python - 比较两个单词是否相似,python
- android - 使用 Jetpack Navigation 移动到 MainActivity
- c - 在 C 中动态设置 .data 段大小
- neo4j - 在 Neo4J 中,即使是删除一个关系也会永远挂起
- python - 数据太复杂,模型无法学习?
- python - Pandas 使用 apply 函数过滤年份并获取月份的平均值
- xslt - Jdeveloper Weblogic:如何获取部署的图片路径
- python - 代理不使用请求库
- python - Python 给了我两个不同的结果,同时对相同的对象执行相同的操作两次