2009-07-14 125 views
241

我分叉了一個GitHub倉庫。然後我對叉子進行了一些更改。然後原始存儲庫合併我的更改和其他人。現在,我想合併那些我缺少的更改。我嘗試了一個簡單的拉,然後推,但是這產生了我的承諾一式兩份。什麼是最好的方式來做到這一點?在GitHub中合併叉子

+0

你用什麼命令從上游回購倉庫中取出並推送到你的貨叉?你的提交意味着什麼是「重複的」?問題的性質不明確,需要更多細節。 – 2013-07-13 22:12:30

回答

326

對於每個存儲庫,您可能都有一個「遠程」。你需要從一個遙控器拉到另一個遙控器。

如果你最初是從你的fork中克隆的,那麼這個remote將被稱爲「origin」。如果您尚未添加的話,你需要的第一個男人的存儲庫添加,另一個遠程:

git remote add firstguy git://github.com/firstguy/repo.git 

之後一切都成立,你確實應該能夠

git pull firstguy master 
git push origin 

記住,git pull只不過是按照順序git fetchgit merge的宏。你只需要從第一個人的倉庫獲取提交列表,然後將他的分支合併到你的樹中。合併應該在你的兩個分支上進行提交。

當然,GitHub在其所有的永久迷人中給了你一條捷徑。在儲存庫的分支上有一個「快進」按鈕,如果完全合併到另一端,您可以使用它來抓住叉子。

+1

有沒有辦法做到這一點完全與遠程操作?如果我理解正確,使用此方法,您將下載對本地存儲庫的所有更改,然後將它們全部上載(推送)回到github上的fork。我寧願以某種方式將所有更改直接拖入github上的fork中。 – 2009-12-07 04:56:51

+1

編號Git不支持。幸運的是,Github現在在Web界面中有一個合併按鈕。 – cweiske 2011-10-21 05:04:56

67

所以上面接受的答案完全不適合我。也就是說,它似乎失去了與原始github作者的聯繫,然後在它之後似乎不再有效。我認爲問題在於答案遺漏了遠程名稱和分支之間的/。所以它會從遠程獲取一個叫master的分支,但是不能對它做任何事情。不知道爲什麼。

這裏是GitHub的從他們的網站推薦的方式:http://help.github.com/fork-a-repo/

一旦克隆你的分叉回購,你需要像以前的答案說了遠程指示添加到原。他們喜歡稱之爲上游,但並不重要。

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 

然後你只需要選擇您想在合併分支。提醒你這些不是當地的分支機構,它們存儲在遙控器中。但前提是你沒有叫上游/大師(這是允許的)地方分支機構你應該罰款合併與下面的一行:

git merge upstream/master 

另外,您可以快捷的獲取/合併(後最初在取至少):

git pull upstream/master