2012-01-20 94 views
5

我是git的新手,我想知道如何處理一個非常基本的場景。我讀了很多關於git的stackoverflow的帖子,但仍然無法找出答案。如何跟蹤我的開發git分支中的origin/master

我們有一個每個人都在研究的起源/主遠程分支。 我有一個我想實現的功能,可能需要時間來開發。同時,人們可能正在檢查源代碼/主人的代碼。

會是什麼我的工作流的樣子和我應該如何去建立我的Git分支,給出了以下需求:

  1. 我希望能夠提交代碼更改我的分支,他們推到我們的服務器上的一個遠程分支,所以我不會因爲我的電腦被炸而發生變化。

  2. 我想讓我的分支與主分支保持同步。

  3. 我想盡量減少定期合併。我喜歡git rebase的概念,所以我想最大限度地利用它,因此快速合併。

  4. 在某些時候,我們將不得不將我的分支FeatureA合併到origin/master中。

彙總:

如何設置,從產地/主拉,但推到原點/ MY-BRANCH一個分支?

我的工作流程會是什麼樣子?

更新:

謝謝@ will-pragnell!您的解決方案和以下內容有什麼區別?

在github本頁面提示:

https://github.com/diaspora/diaspora/wiki/Git-Workflow

爲了得到從開發主幹上的最新更新,做一個一次性設置輸入建立主GitHub庫爲遠程:

$ git remote add upstream git://github.com/diaspora/diaspora.git 
$ git fetch upstream 
$ git checkout master 
$ git rebase upstream/master 
$ git checkout 100-retweet-bugfix 

[確保所有致力於爲分支必要]

$ git rebase master 

回答

5

您可能不希望有一個分支從主控制器拉出並推送到您自己的分支。你想要的是從主人拉到你的本地主人,在本地處理重新綁定,然後推送到你自己的遠程分支的功能。這是一個相當標準的工作流程,爲您提供完整的控制和最少量的合併。個人而言,我會做這樣的:

創建新的本地分支

git checkout -b myFeature 

推送一個新的遠程分支(見this stackoverflow question如果需要此步驟的詳細信息)

git push origin myFeature 

現在,您可以在myFeature分支上輕鬆工作,在需要時使用上述命令,而不必搞亂主分支。當你需要得到別人對主做提交的持有,你可以這樣做是這樣的:

git checkout master 
git pull (this will just fast-forward if you don't make any local changes to master) 
git checkout myFeature 
git rebase master 

當你的功能完成後,您可以合併或衍合分支回至主讓大家否則會獲得您的新功能。就像這樣:

git checkout master 
git merge myFeature 
git push origin master 
+0

謝謝@ will-Pragnell!我的問題更新如下:你的解決方案和以下內容有什麼區別? github上的這個頁面建議:https://github.com/diaspora/diaspora/wiki/Git-Workflow 爲了從開發中獲得最新的更新,請執行一次性設置以建立主要的GitHub回購通過輸入一個遠程: $ git的遠程添加上游GIT中://github.com/diaspora/diaspora.git, $ GIT中取上游, $ GIT中結帳主, $ GIT中變基上游/主, $ git的結帳100-retweet-bugfix, [請確保所有提交的分支必要], $ git rebase master – ben39

+0

做完之後: 'git checkout master git merge myFeature git推起源大師' 我得到 '! [拒絕]多發件人 - >多發件人(非快發) 錯誤:無法將某些引用推送到'ssh:// xxx' 爲防止您丟失歷史記錄,拒絕非快進更新 在再次推送之前合併遠程更改(例如'git pull')。有關詳細信息,請參閱 '關於'快速前進'的快速註釋'部分「# – ben39

+0

關於您的第二條評論 - 在您嘗試合併之前,是否已重新綁定到主服務器上? (當我有一個空閒的時刻,稍後再看看你的第一條評論 - 對不起,這裏超級忙!) –

0

git checkout -b FeatureA(創建和結帳分支)
git push origin FeatureA(推新創建的分支原點)

新的分支FeatureA工作。您不希望頻繁合併,然後再分配

git rebase origin 

將來每當你想合併到主。

git checkout master 
git merge FeatureA 
git push origin master 
+0

任何時候我做'git rebase master'然後'git push origin/multi-senders'我得到以下'ssh:xxx ![拒絕]多發件人 - >多發件人(非快發) 錯誤:無法將某些引用推送到'ssh:// xxx' 爲防止您丟失歷史記錄,拒絕非快進更新。 再次按下之前合併遠程更改(例如'git pull')。有關詳細信息,請參閱'git push --help'的'快速轉發注意事項'部分 – ben39