2011-02-28 49 views
4

我在GitHub上派生了一個項目,推送了一些更改,並打開了一個pull請求。維護者簽署過和應用新的變化犯(而不是合併我犯)等提交圖是這樣的:當拉取請求被摘下時,我該怎麼辦?

* 03a0687 (origin/master) frotz: Corrected MAN_PREFIX 
| * 11d3e98 (HEAD, master, jleedev/master) frotz: Corrected MAN_PREFIX 
|/ 
* 9c3dd1a yajl: use direct patch from Github. 

很顯然,我必須要麼變基或強制更新我的地方科。然後我必須強制推送到GitHub的fork上嗎?我主要是問,因爲強制更新不應該是自動的。當維護人員選擇您的更改時,這是標準的事情嗎?

+0

另外:我剛剛在[StGIT教程](http://wiki.procode.org/cgi-bin/wiki.cgi/StGIT_Tutorial)中閱讀了這個內容:「作爲一個慣例,你應該避免在'master '一個遠程項目的分支,並且僅將它用作參考,因爲它反映了別人的工作。「有道理。 – 2011-03-17 23:59:32

回答

8

最簡單的事情就是總是在主題分支上工作。這樣,你的叉子主分支總是看起來像上游,所以一旦上游包括你的改變,你總是做同樣的事情,只是刪除你的主題分支。

如果上游合併您的更改,則主控和主題分支都包含相同的提交,並且您可以安全地刪除主題分支。如果上游櫻桃挑選您的提交,然後驗證更改使其上游,您可以刪除主題分支。

這樣做的另一個主要好處是您可以輕鬆地將您的主題分支與主人分開。有時,如果補丁無法在沒有手動解決衝突的情況下應用到上游,他們會要求您重新設置或合併,並自己執行衝突解決方案,因爲它的代碼和關於它的知識更多。我也懷疑他們選擇了你的提交,因爲他們在你創建了fork之後已經提交了,並且不想爲少量提交引入合併提交。通過櫻桃採摘,他們保持了他們的歷史更線性和更清潔。如果你經常重組,那麼它可能只是一個快速前進的合併,他們不需要挑選。

至於你現在要做什麼的問題,強制更新你的本地分支,然後強制推回你的分叉是你唯一的選擇。

+0

好吧,這個項目的策略似乎總是挑選提交,也許是因爲有多個維護人員,並且還需要添加Signed-off-by行。但是,無論哪種情況,主題分支功能都有意義。 – 2011-02-28 23:23:18