2013-06-05 46 views
1

我把分錄回分給我的github帳戶。主從上游,主題分支 - 我的

然後我做了

git remote add upstream [email protected]:********/*********.git 

現在我有upstream遠程 - 原來,和origin - 我的叉子。我的master分支正在跟蹤origin/master

我永遠不會推到origin/master,因爲我要做的所有拉取請求都將來自主題分支。

與此同時,我會經常從upstream/master中提取最新的變化,以便從中創建新的主題分支。

所以我想以這樣的方式配置的git:

  • 我的本地分支master被跟蹤upstream/master
  • 當我在master分支,我也git push,這將失敗,因爲upstream讀-只要。
  • 當我在master分支和我做git pull,我會拉從upstream/master的最新變化,我將立刻能夠做到git checkout -b my-new-topic-branch從最新upstream/master已經分叉。

關於工作流程的任何意見?如何爲此設置git?

作爲在master我所做的:

git branch -u upstream/master 

但是當我切換到一個話題分支:

git remote show origin 
... 
    Local refs configured for 'git push': 
    master pushes to master (fast-forwardable) 
... 

UPDATE:

解決辦法:

(c8cc3a6) » git branch -d master         
Deleted branch master (was c8cc3a6). 

(c8cc3a6) » git branch --track master upstream/master 
Branch master set up to track remote branch master from upstream. 

(c8cc3a6) » git remote show origin 
... 
    Local refs configured for 'git push': 
    master      pushes to master      (fast-forwardable) 
... 

(c8cc3a6) » git remote show upstream 
... 
    Local branch configured for 'git pull': 
    master merges with remote master 
    Local ref configured for 'git push': 
    master pushes to master (up to date) 

(c8cc3a6) » git checkout master 
Switched to branch 'master' 

(master) » git pull 
Already up-to-date. 

(master) » git push 
ERROR: Repository not found. 
fatal: Could not read from remote repository. 

Please make sure you have the correct access rights 
and the repository exists. 

(master) » git checkout -b test-branch 
Switched to a new branch 'test-branch' 

(test-branch) » git push 
... 
To [email protected]:********/*******.git 
* [new branch]  HEAD -> test-branch 

還是比較容易理解的方式:

(test-branch) » git branch -d master 
Deleted branch master (was c8cc3a6). 

(test-branch) » git checkout -b master upstream/master 
Branch master set up to track remote branch master from upstream. 
Switched to a new branch 'master' 

回答

1

在你.git/config在本地資源庫,使[branch "master"]部分是這樣的:

[branch "master"] 
remote = upstream 
merge = refs/heads/master 

這將處理項目1和3(跟蹤和拉組態)。我不確定有什麼方法可以完美地完成第2項,但是您可能會發現,因爲upstream不是您的存儲庫,它會拒絕您的推送(除非該回購的擁有者允許隨機貢獻者推送,而我我不確定可以在Github上完成...)。

+0

我得到這個配置運行'git branch --track master upstream/master'。我已經用解決方案更新了這個問題。謝謝! – warvariuc