2013-08-19 108 views
11

我正在與一個團隊合作,我們正在執行功能分支和拉取請求。github上的拉取請求 - 顯示從主大師重新提交的提交

我創建了一個分支,對它進行了一些工作,同時對master也做了很少的工作。

然後,我重新對抗了主人的分支。現在我想要做一個拉動請求。

但是,在GitHub中,pull請求顯示了我第一次創建分支和現在發生的所有提交 - 我在此功能分支上進行的提交以及發生在兩者之間的提交。

這是嘈雜的混亂 - 我做錯了什麼?我希望拉請求顯示我已經提交的提交,因爲其他提交已經在master和我的分支上,沒有區別。

我看到的唯一建議是根據最新的上游主和櫻桃採摘提交從我的分支到它的另一個分支。

回答

3

你一定做錯了什麼。作爲rebase的結果,你應該在master的最後一次提交之後只有唯一的修訂版本,並且你的分支應該爲快進做好準備。

我現在做了一個快速測試,當然,pull請求只顯示預期的唯一修訂。不應該有嘈雜的雜波,也不需要挑選櫻桃。你的分支似乎有些問題。

嘗試再次變形。如果您之前正確重新組裝,現在應該是一個「無」選項。結帳您的分行,並嘗試在主頂部再次變基,像這樣:

git checkout yourbranch 
git rebase master 

這應該打印Current branch will-have-rebased is up to date.,你推分支到GitHub上後,你應該能夠創建一個拉請求,其中只有獨特的提交顯示。我不明白爲什麼不。

重要:記住,如果你以前墊底推你的分支,Git會拒絕後墊底再次推。這是因爲一般來說,你不應該重寫公共分支的歷史,所有關於重新定義的指南都解釋了這一點。如果你想推動分支,在github上重寫它的歷史記錄,添加--force標誌。

+1

那是按照指定工作,但我不能推分支。答案是因爲我之前已經推過一次。 –

+0

@HhyuDai你不能再推一次,因爲沒有什麼可推動的,或者因爲Git拒絕重寫分支的歷史?你可以發佈你的回購網址和分行的名字嗎? – janos

+0

私人回購恐怕不能放棄。但是這是因爲git拒絕重寫歷史記錄,因爲在rebase之後,SHA現在都是不同的。 –

8

我曾經有過同樣的問題:

如果我們有foo分支,從master,這已經被推入origin支,並在兩個分支中所做的更改,然後合併/墊底我得到改變之後來自Pull Request的差異中的master

我解決它通過執行git fetch第一,更新我的本地master分支,改變當地的分公司foo,然後執行命令:

git rebase master

git push -f origin foo:foo

這就迫使遠程分支,然後公關的diff只包含適當的更改,就像根據最近的master創建分支一樣。

+0

我得到'一切都是最新的'沒有任何變化 – feresr

+0

你是否首先從'origin/master'拉出來?將'foo'推送到遠程時是否使用了強制? –

+0

我想我忘了強制推送,我通過將我的PR上的'base'分支更改爲除master之外的任何分支來解決它,然後將其更改回來 – feresr

相關問題