2012-05-18 30 views
0

說我們有這個拓撲結構:推支行沒有基礎重建

X--X--X--    origin/master 
    \  
    \  
     \--X--X--X--    b1 (private - not to be shared) 
      \ 
       \ 
       \--X--X--X-- b2 (to be shared upstream) 

我們希望只共享B2,但不是B1,所以我們可以這樣做:

git rebase --onto origin/master b1 b2 
git push origin b2 

是否有可能實現沒有使用rebase和改變當地歷史的同一目標? (推b2 sans b1提交)

回答

3

不,這是不可能的。一些b1提交在b2的歷史,所以你將不得不重寫歷史來擺脫這些。

2

它有助於不考慮單個文件,而是考慮整個提交對象。要到達b2,你需要第二行的一些提交對象。

A--B--C--     master 
    \ 
    \--D--E--F--   b1 
      \ 
      \--G--H--I-- b2 

爲了得到我承諾,你需要所有的提交對象A,B,d,E,G,H,I

所以,除非你的B你會不會變基摹能夠排除D,E提交。