pem*_*ahl 16 git github git-merge
GitHub上有一个开源项目.它的原始仓库包含最新的主分支.现在有人(不是我)分配了这个仓库,从主分支创建了一个开发分支,并将东西添加到开发分支.我现在想要做的是将开发分支合并回主分支.不幸的是,分叉回购的主分支不是最新的.另请注意,我没有拥有两个相应的远程回购.
目前,我已将原始仓库和分叉仓库克隆到我的本地机器上git clone
.如何将forked repo的开发分支合并到我本地计算机上的原始仓库的主分支中(即不在远程服务器上,这是不可能的)?
hel*_*ert 14
使用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
Run Code Online (Sandbox Code Playgroud)
然后,rebase
或者merge
您的开发分支进入主分支:
$ git checkout development
$ git rebase master # OR "git merge master"
Run Code Online (Sandbox Code Playgroud)
如有必要,解决所有冲突.合并时,用于git commit
完成合并,当使用变基础时git commit && git rebase --continue
.
您现在应该能够到git push
分叉存储库的原点,并创建一个拉取请求.或者,如果您有权这样做,您也可以从fork直接推送到原始存储库.
听起来您已经克隆了两个存储库。我假设您将它们放在目录clone1
和clone2
.
在进行合并之前,您需要将所有变更集放入一个存储库中。因此,我们将从您的一个克隆中拉入另一个克隆。如果您从头开始执行此操作,则只需克隆一个存储库,然后获取另一个存储库,而不是克隆两者。
cd clone1
git checkout master
git remote add clone2 ../clone2
(将两个遥控器放入一个存储库中)。如果您没有克隆两个存储库,则不必这样做 - 您只需这样做git remote add otherthing https://<github URI>
git fetch
(从clone2
中获取更改clone1
)。现在您拥有了一个包含所有内容的存储库。git checkout origin/master
或者您也可以去当地的分行看看。您的偏好。请记住,origin
这里指的是 的来源clone1
。git merge clone2/development
如有必要,请在此时解决冲突。提交结果。git checkout -b my-ongoing-development
(命名您刚刚创建的分支,其中包含两个远程分支)