2012-05-18 32 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提交。