将不相关的存储库导入另一个存储库分支
Import unrelated repository to another repository branch
我在 Whosebug 上尝试了很多答案,但似乎没有一个能完全按照我想要的方式工作。基本上我有一个主存储库,我已经创建了一个分支(例如:'feature'),我需要添加另一个完全不相关的存储库作为文件夹到这个 '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"
可能的解决方案。
- 添加导入 远程仓库。
git remote add imported <url_to_imported>
.
- 获取您需要的分支(本例中为impbr)。
git fetch imported impbr:impbr
.
- 切换到基于 imported repo 的 imported 分支的新创建的本地分支。
git checkout -b impbr remotes/imported/impbr
.
- 现在您可以删除 导入 远程,因为其他步骤不需要它。
git remote remove imported
.
- 根据需要修复该分支中的目录结构:创建目标文件夹 "Feature",将所有内容("XXX folder"、"YYY file")移动到该文件夹,提交所有这些更改。新提交应该只包含重命名。
git mv . Feature/ && git add --all . && git commit -m 'Moved all files to "Feature" dir.'
- 切换到feature分支,合并fixed分支impbr进去。
git checkout feature && git merge impbr
.
- 现在您可以安全地删除 impbr 因为它不再需要了。
git branch -d impbr
.
我假设您要将合并的存储库添加到新目录。
尝试以下命令
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 不跟踪空目录。)
这将为您提供包含双方所有历史记录的常规合并提交。
我在 Whosebug 上尝试了很多答案,但似乎没有一个能完全按照我想要的方式工作。基本上我有一个主存储库,我已经创建了一个分支(例如:'feature'),我需要添加另一个完全不相关的存储库作为文件夹到这个 '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"
可能的解决方案。
- 添加导入 远程仓库。
git remote add imported <url_to_imported>
. - 获取您需要的分支(本例中为impbr)。
git fetch imported impbr:impbr
. - 切换到基于 imported repo 的 imported 分支的新创建的本地分支。
git checkout -b impbr remotes/imported/impbr
. - 现在您可以删除 导入 远程,因为其他步骤不需要它。
git remote remove imported
. - 根据需要修复该分支中的目录结构:创建目标文件夹 "Feature",将所有内容("XXX folder"、"YYY file")移动到该文件夹,提交所有这些更改。新提交应该只包含重命名。
git mv . Feature/ && git add --all . && git commit -m 'Moved all files to "Feature" dir.'
- 切换到feature分支,合并fixed分支impbr进去。
git checkout feature && git merge impbr
. - 现在您可以安全地删除 impbr 因为它不再需要了。
git branch -d impbr
.
我假设您要将合并的存储库添加到新目录。
尝试以下命令
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 不跟踪空目录。)
这将为您提供包含双方所有历史记录的常规合并提交。