繁体   English   中英

如何将分叉仓库的分支合并到原始仓库的主分支?

[英]How to merge branch of forked repo into master branch of original repo?

GitHub 上有一个开源项目。 它的原始 repo 包含最新的 master 分支。 现在有人(不是我)分叉了这个 repo,从主分支创建了一个开发分支,并向开发分支添加了东西。 我现在想做的是将开发分支合并回主分支。 不幸的是,分叉回购的主分支不是最新的。 另请注意,我不拥有两个各自的远程存储库。

目前,我已经使用git clone将原始 repo 和分叉的 repo git clone到我的本地机器上。 如何将分叉存储库的开发分支合并到我本地机器上原始存储库的主分支中(即不在远程服务器上,这是不可能的)?

使用 GitHub 时,您可以使用Pull Request来执行此操作。 只需将您的开发分支推送到分叉的远程存储库,并按照链接文章中的描述创建拉取请求。 然后,原始存储库的所有者可以将您的存储库添加为新的远程存储库,获取您的更改并将您的开发分支合并回主分支。

您的主分支通常没有必要完全更新——尽管它非常有用,尤其是在合并开发分支时。

首先,您应该将分叉存储库中的master分支更新为最新:

$ git remote add upstream ssh://path/to/original/repo
$ git checkout master
$ git fetch upstream # Instead of "fetch" & "merge", "pull" would also work
$ git merge upstream/master 

然后merge您的开发分支rebasemerge到主分支:

$ git checkout development
$ git rebase master # OR "git merge master"

如有必要,解决任何冲突。 合并时使用git commit完成合并, git commit && git rebase --continue时使用git commit && git rebase --continue

您现在应该能够git push到分叉存储库的来源,并创建拉取请求。 或者,如果您被授权这样做,您也可以直接从您的 fork 推送到原始存储库。

听起来您已经克隆了两个存储库。 我将假设您将它们放在目录clone1clone2

在进行合并之前,您需要将所有变更集放入一个存储库中。 所以我们将从你的一个克隆中拉到另一个。 如果您从头开始执行此操作,您只需克隆一个存储库,然后获取另一个存储库,而不是同时克隆这两个存储库。

  1. cd clone1
  2. git checkout master
  3. git remote add clone2 ../clone2 (将两个遥控器放入一个git remote add clone2 ../clone2 )。 如果您没有克隆两个存储库,则不必这样做 - 您只需执行git remote add otherthing https://<github URI>
  4. git fetch (将更改从clone2获取到clone1 )。 现在您拥有了一个包含所有内容的存储库。
  5. git checkout origin/master或者你可以查看本地分支。 你的偏好。 请记住,这里的origin指的是clone1的源。
  6. git merge clone2/development如有必要,此时解决冲突。 提交结果。
  7. git checkout -b my-ongoing-development (命名你刚刚创建的分支,包含两个远程分支)

上一条评论很接近,除了第 6 步应该是

git pull clone2 development

参考另一个远程的 Git 合并分支

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM