当前位置:  开发笔记 > 开发工具 > 正文

在GitHub中合并分叉

如何解决《在GitHub中合并分叉》经验,为你挑选了2个好方法。

我分叉了一个GitHub存储库.然后我把一些更改推到了我的前叉.然后原始存储库合并了我的更改和其他一些.现在,我想合并那些我不知道的变化.我尝试了一个简单的拉动,然后是推送,但是这会让我的提交重复一次.最好的方法是什么?



1> Jim Puls..:

您可能每个存储库都有一个"远程".您需要从一个遥控器拉出并推到另一个遥控器.

如果你最初从你的fork克隆,那个遥控器将被称为"origin".如果您尚未添加它,则需要将第一个人的存储库添加为另一个远程:

git remote add firstrepo git://github.com/first/repo.git

在完成所有设置之后,您确实应该能够

git pull firstrepo master
git push origin

请记住,git pull无非是做宏更git fetchgit merge,按照这个顺序.您只需要从第一个人的存储库中获取提交列表,然后将其分支合并到您的树中.合并应该对两个分支上的提交做正确的事情.

当然,GitHub在其所有永恒的真棒中为您提供了一条捷径.在您的存储库的分支上有一个"快进"按钮,如果您完全合并到另一侧,您可以使用它来捕获您的分叉.


@cweiske - 这个Merge按钮在哪里?我看了整个管理页面和主页,但找不到它:(.
@Adam,它在Pull Request页面上.因此,forker会打开一个Pull请求,将其中一个分支合并到你的一个分支中.在那里你可以点击合并按钮.
按钮[快进](https://github.com/blog/266-fast-forward-your-fork)似乎不再可用.有关信息,我在我的命令中使用了另一个[tag:Git] URL:`git remote add snaury git@github.com:snaury/script-runner`

2> Bob Spryn..:

所以上面接受的答案对我来说并不完美.也就是说,它似乎在它工作时失去了与原始github作者的链接,然后在那之后似乎不再起作用了.我认为问题是答案遗漏了远程名称和分支之间的/.因此,它将从远程获取一个名为master的分支,但之后无法对其执行任何操作.不确定为什么.

这是github从他们的网站推荐的方式.

一旦你克隆了你的分叉回购,你需要添加一个指向原始的遥控器,就像之前的回答所说的那样.他们喜欢把它叫做上游,但没关系.

git remote add upstream git://github.com/octocat/Spoon-Knife.git

然后你去取

git fetch upstream

你会看到可用于合并的版本

From git://github.com/octocat/Spoon-Knife.git
 * [new branch]      gh-pages   -> upstream/gh-pages
 * [new branch]      master     -> upstream/master

然后你只需要选择要合并的分支.请注意,这些不是本地分支,它们存储在遥控器下.但是如果你没有一个名为upstream/master(允许)的本地分支,你可以很好地合并下面的行:

git merge upstream/master

或者,您可以使用以下行快捷方式获取/合并(在初始提取之后):

git pull upstream/master

推荐阅读
小色米虫_524
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有