将不相关的存储库导入另一个存储库分支

时间:2015-01-05 17:05:57

标签: git version-control

我在stackoverflow上尝试了很多答案但是它们似乎都没有按照我想要的方式工作。基本上我有一个主存储库,我已经创建了一个分支(例如:' feature'),我需要添加另一个完全不相关的存储库作为此功能的文件夹'科。我需要从导入存储库中获取历史记录以进行合并。我该怎么做呢?

一个小插图:

"Project to import"
- "XXX folder"
- "YYY file"

"Main repository" - "feature-branch"
- "ABC folder"
- "Feature folder" - #How it should look after merging
-- "Imported files from other repo"

2 个答案:

答案 0 :(得分:0)

可能的解决方案。

  • 导入 repo添加为远程。 git remote add imported <url_to_imported>
  • 获取所需的分支(在此示例中为 impbr )。 git fetch imported impbr:impbr
  • 切换到新创建的本地分支,该分支基于导入 repo中的导入分支。 git checkout -b impbr remotes/imported/impbr
  • 现在您可以删除导入远程,因为其他步骤不需要它。 git remote remove imported
  • 根据需要修复该分支中的目录结构:创建目标文件夹“功能”,将所有内容(“XXX文件夹”,“YYY文件”)移动到该文件夹​​,提交所有这些更改。新提交应仅包含重命名。 git mv . Feature/ && git add --all . && git commit -m 'Moved all files to "Feature" dir.'
  • 切换到功能分支,并将已修复分支 impbr 合并到其中。 git checkout feature && git merge impbr
  • 现在您可以安全地删除 impbr ,因为它不再需要了。 git branch -d impbr

答案 1 :(得分:0)

我假设您要将合并的存储库添加到新目录。

尝试以下命令

git remote add unrelated <url-of-other-repo>
git fetch unrelated <branch-in-other-repo>
mkdir -p <path/to/new/code>
touch <path/to/new/code/>temp
git add <path/to/new/code/>temp
git commit -m 'Bring in new directory'
git merge --no-ff unrelated/<branch-in-other-repo> -s recursive -Xsubtree=<path/to/new/code>
git rm <path/to/new/code/temp>
git commit --amend --no-edit
git remote remove unrelated 

(您需要添加临时文件,因为Git不会跟踪空目录。)

这将为您提供定期合并提交,其中包含双方的所有历史记录。