这个问题与How to combine two branches from two different repositories in a single repository?有些相似。
但是,我想将相同存储库中的两个分支组合到一个分支中,但是在单独的子目录中。所以,从一个有两个分支的仓库开始:
/appFoo
-MasterBranch
-OtherVersionBranch
结束了一个分支(主)和两个子目录的回购:
/appFoo
/MasterSubdirectory
/OtherVersionSubdirectory
当然,我想保持历史记录不变,所以如果我在 OtherVersionSubdirectory 中查看文件的日志,我会看到对该分支进行的所有提交。
基本上,作为开发分支开始的是另一个客户的自定义版本,因此我们不认为将其视为主分支是有意义的。
谢谢大家!
答案 0 :(得分:3)
切换到分支MasterBranch
并将分支的内容抛出到目录MasterSubdirectory
,提交:
git checkout MasterBranch
mkdir MasterSubdirectory
git mv -k * MasterSubdirectory
git commit -a
这使您的分支只有一个目录。
在OtherVersionBranch中做类似的事情:
git checkout OtherVersionBranch
mkdir OtherVersionSubdirectory
git mv -k * OtherVersionSubdirectory
git commit -a
将一个分支合并到另一个分支
git checkout MasterBranch
git merge OtherVersionBranch
git branch -d OtherVersionBranch
现在你有一个分支MasterBranch
。您可以将其与master
合并,也可以随意做任何事情。
或者,如果您不介意重写历史记录,则可能需要使用rebase替换merge。这将产生一个更清晰的提交顺序 - 第一个分支,后一个分支。
并在副本上试试这个。它对我有用,但我的情况很简单。