将 git 回购并入另一个回购的分支

给予回购福和回购酒吧。我想把 Bar 和 Foo、 但是合并为一个单独的分支,称为 baz

把酒吧回购单放在这里。

134695 次浏览

你不能把 储存库合并成 树枝。您可以将来自另一个存储库的 树枝合并到本地存储库中的 树枝中。假设你有两个仓库,foobar都位于你的工作目录:

$ ls
foo bar

更改为 foo存储库:

$ cd foo

添加 bar存储库作为远程文件并获取它:

$ git remote add bar ../bar
$ git remote update

foo存储库中创建一个新的分支 baz,不管您当前的分支是什么:

$ git switch -c baz

将分支 somebranchbar存储库合并到当前分支:

$ git merge --allow-unrelated-histories bar/somebranch

(在 git 版本2.9之前不需要 --allow-unrelated-histories)

使用“现实生活”命令更新:

从回购目录开始,确保您的工作副本是干净的(没有文件更改,添加或删除)。


开一家新分店:

git checkout -b <my-branch>

添加辅助遥控器,然后获取它:

git remote add <repo-name> git@github.com:xxx/<repo-name>.git
git remote update

将他们的一个分支合并到你当前的分支中:

git merge <repo-name>/<their-branch>


如果你不知道你想要哪个 <their-branch>,那么就选择 master

如果确定要接受所有远程更改并避免冲突(覆盖你的) ,那么可以在最后一步中指定 -X theirs作为 git merge的选项。

如果您想将它添加到子目录中,那么您可能应该使用 Git 子模块

使用 larsks 的指南,我能够使用 SourceTree 完成这项工作。

  1. 在目标存储库中创建一个分支
  2. 通过单击 Settings 按钮并添加源存储库,将源存储库作为远程添加。
  3. 两个存储库中的分支现在都显示在分支列表中。我使用合并工具将一个分支从源存储库合并到新的目标存储库的分支。
  4. 使用 SourceTree 或我的 IDE 解决任何冲突
  5. 提交分支中的更改。
  6. 使用“设置”按钮从远程列表中删除源存储库。