2010-05-06 54 views
3

我對Git很新穎,至今也很喜歡,但我不確定這裏做了什麼。跟蹤某人在分支機構的GitHub回購

我已經分叉了一個github項目,目前正在將其移植到另一種語言。作爲參考,我創建了一個代碼分支,就像我製作fork時一樣。我現在的問題是,原來的項目已經更新,我無法弄清楚如何將這些變化從原來的主人那裏拉到我的分支(因爲'origin'指向我的github項目)。

後續問題對於我自己的教育,原始項目的所有者必須運行什麼命令才能從我的分支進入他的主分支?編輯:這些答案工作時,我從我自己的「主」分支運行它們,但不是當我從我的'跟蹤'分支運行它們(我在這裏寬鬆地使用術語,因爲我知道一個git命令的儘管如此,不知道它做了什麼)。

當我在我的非主分支,並運行git fetch upstream,沒有任何反應。當我嘗試git fetch upstream:master,它說

ssh: upstream: no address associated with name 
fatal: The remote end hung up unexpectedly 

回答

1

你可以把它添加到您的遠程回購的列表和獲取/拉從它

$ git remote add first-repo-name git://github.com/first-repo-name/repo.git 
$ git fetch first-repo-name 
# or: 
$ git pull first-repo-name 

git pull實際上將合併第一回購名稱主分支到您的主分支(如果您當前在該分支)

原始項目的所有者必須運行哪條命令才能將分支從我的分支拖入主分支?

在GitHub的一面,這不會是一個實際的命令,但你必須發起一個pull request的結果。

alt text http://img.skitch.com/20080223-1njj3f5559un2eyt51j92t2xkf.png

從技術上講,他可以在他的本地回購添加您的分叉回購作爲遠程回購(像上面一樣),但如果他的回購在很大程度上分叉,這變得無法實用,因此,中央「拉請求「機制。

+0

感謝詳細的解答!不幸的是,它只適用於我的主分支(或者也許這就是git應該如何工作?) – 2010-05-07 15:42:04

+0

@drhorrible:'remote add'不依賴於任何分支。'git fetch'將獲取所有分支,除非你指定一個分支。 'git push'只會在主人簽出時合併主人,你可以在任何分支上進行提交請求。 – VonC 2010-05-07 17:00:07

3

您可以添加使用git remote原回購:

$ git remote add upstream http://github.com/user/repo.git 

(你可以把它比其他upstream東西,如果你想要的,但是這是你用來指代遠程名稱。)

獲取更新,只需運行:

$ git fetch upstream 

爲了得到你的回購的變化進入上游回購,維護者將不得不您的回購添加的遠程,然後拉出變化:

$ git remote add drhorrible http://github.com/youruser/yourrrepo.git 
$ git pull drhorrible your-branch:master 

或者,如果上游維護者不希望你的回購添加的遠程,他可以直接引用它:

$ git pull http://github.com/youruser/yourrepo.git your-branch:master 
+0

感謝您的詳細解答!不幸的是,它只適用於我的主分支(或許這就是git應該工作嗎? – 2010-05-07 15:41:37

+0

什麼只適用於'master'分支? – mipadi 2010-05-07 16:14:31

+0

git fetch上游。遠程已添加。 – 2010-05-09 06:41:05

0

Git應該是這樣工作的,你將你的起源(無論是分叉回購,還是原來的)的變化引入你的本地主人。然後你會使用git-merge或者git-rebase把它們放到你的本地分支中。一旦你對結果感到滿意,你可以推回遙控器。

我從你問這個問題的方式來思考,你從最初的回購拉動了更改後,最好使用git-rebase來重新分配主分支。

如果你試圖從命令行執行所有這些,你將需要學習git-cherry。否則,像gitx或gitk這樣的工具對選擇要合併的提交非常有幫助。