2013-02-17 29 views
3

這是我現在所擁有的:Git工作流 - 在推向公共回購之前或之後合併主人?

1 Github remote (origin) 
2 Heroku (staging and production) 

工作流程看起來像如下:

第一次(設置):

1 - Fork public Github (upstream) into public Github <br> 
2 - Clone from public Github into local 

開發工作流程:

1 - Checkout feature-branch from local master 
2 - After all commits, squash them 
3 - Push that branch (with one commit) into origin 
4 - Do a pull request to public Github 
5 - Merge into public Github master 
6 - Do a pull of master into local 
7 - Do a rebase here?? 
8 - Push local master into Heroku Staging (do testing...) 
9 - Push local master into Heroku Production 

這是他們建議我做的,但我有一些疑問。在完成pull請求併合併到公共Github主(上游)之後,我將主人拉入本地,然後爲什麼在這裏有一個rebase有意義?在推送功能分支到原點之前,我不應該進行rebase嗎?

另一個疑問是,一旦我完成從上游主人到本地分支的拉動,我不應該將該主人推到原點(我的分叉存儲庫)?

編輯:在這裏你可以看到工作流程示意圖方式:Diagram workflow

感謝澄清這些疑慮。

回答

2

首先,git rebase對共享代碼是危險的。重定位實際上是歷史重寫,它也會改變提交哈希。這意味着git可能會認爲過去做出的提交需要重新應用(當您共享代碼時),這可能最終成爲頭痛的問題。大多數時候我都會避免重組。

我寧願有2個不同的遠程網址來源。一個用於推送,另一個用於提取。抓取遠程將是主存儲庫,推送遠程將是分叉庫。通過這種方式,您可以從主資源庫中取出最新的主資源,併合並一個壓縮分支,將主分支推入分叉的資源庫,然後請求提取請求。

您可以將URL設置到主存儲庫這樣的:

git remote set-url origin <main_repo_url_here>

而且事後,設置叉網址只有像這樣推:

git remote set-url --push origin <forked_personal_repo_url_here>

您可以檢查你的結果是這樣的:

git remote -v

+0

感謝您的回答。然而,根據工作流程,知道是否正確完成重新定位將是可愛的。我相信在做拉請求之前應該完成rebase,但我不確定... – 2013-02-17 13:14:13

+0

在這種情況下,我會回答另一個問題:您想重新綁定什麼?您的(壓扁的)提交已經在上游的主分支中,並且在您提取了最新的主分支後,其中包含功能分支更改。那麼需要進行重組? – 2013-02-17 16:01:04