2012-10-11 172 views
4

對不起,只是另一個「rebase」問題,但我對此感到困惑。
表單時間我把我的提交在開發分支到遠程(原點)。現在有一件事與rebase一直提到的是:「如果你推動你的改變,永遠不會變質」。
這意味着,我永遠不可能重建我的開發分支,只能合併它?git rebase develop分支

工作在一個功能分支是清楚的,如果我沒有推這個,我可以rebase而不是合併。我的問題只指向開發分支。

回答

3

閱讀"The Perils of Rebase" in the "Pro Git" book —它提供了很好的解釋與圖片。 git-rebase manual page也包含「從上游rebase」恢復「),這讓你出現在每個可能受到你的rebase影響的人的鞋子裏。 ;-)好的ASCII藝術也包括在內。

不,不應將其視爲教條:有時候,這是一種有效的方法,如果這樣的重新定義明確表達給您的公共存儲庫的其他用戶。例如,請參閱what the current Git maintainer says about his "pu" branch(本備忘錄已過時,此文本的較新版本未直接提及重新綁定,因此我決定鏈接到此舊版本)。

+0

我讀過「Pro Git」一書,當我在功能分支上工作時,它在我的腦海中清晰可辨。但事實上,「發展」只是一個分支,就像其他規則一樣。因此,任何推向遠程回購的分支都不應該重新設置。謝謝。 – chrise

1

無論你有什麼樣的「分支」(畢竟它只是一個概念,對於git,分支是分支)。一旦你推動了任何改變,不要做任何變更,否則提交的哈希值將會改變。

+0

你的意思是:「沒關係......」。沒錯,「開發」只是另一個分支的名稱。必須牢記這一點。 – chrise

+0

正確,謝謝,並修復:) –

3

如果沒有人用您的遠程回購克隆/更新他/她自己的本地回購,您可以重新綁定(並強制下一次推送)。
如果其他人已經從您的遠程回購中拉出來,並且您強制推送已重定位的分支,則會發布新的歷史記錄,迫使他們進行更復雜的重置操作(他們必須將其本地分支重置爲新的遠程分支歷史記錄,然後重新應用他們自己的提交)。
對於公共遠程回購,forced push can lead to problems ;)

0

您不應該重新綁定推送的提交。但是,未綁定的提交(-i)提交完全沒問題。