2010-03-19 78 views
3

我有一個分支,我想rebase到我主人的最新提交。問題在於主服務器上的一箇中間提交是刪除並忽略一組特定的文件(請參閱this question)。git:當rebind提交文件刪除時如何不刪除文件

如果我只是做一個直接重組,那些文件將被刪除。有沒有辦法做到這一點,裏面 git,而不是手動拷貝所有的文件,然後複製他們回來後?

或者我應該做一些事情,如創建一個新的分支關閉主,然後合併只是從舊分支提交?

嘗試ASCII藝術:

master branch 
    |  w work in progress on branch 
    C  | committed further changes on master 
    |  | 
    B  /committed delete/ignore files on master 
    |  2 committed changes on branch 
    | / 
    A /committed changes on master which I now need to get branch working 
    | 1 committed changes on branch 
    0___/ created branch 

(在做藝術,我意識到,我可能只是從A變基分支,然後合併時,我已經完成了,但我仍想知道是否有一種正確的方法)

更新警告任何人試圖這樣做。這裏提出的解決方案很好,但是當你再次簽出master時,B提交將被重新應用,並且你再次丟失所有文件:(

+0

您是否只需要A,或A,C和主分支? – VonC

+0

@VonC,好吧,我原本以爲他們都是這樣,但我現在可以用A來做。最後,我希望在最後(當分支開發完成時)重新分配,流',但我想最糟糕的是我可以在最後融合。 – Benjol

回答

2

從你的評論,我收集你需要rebase dev分支在上面主除了 B.
你不希望看到的文件,你在一個分支去除另一個被刪除

一個可能的解決辦法是:

  • rebase --interactive主改寫爲了提交(如果可能)
  • 基於C的頂部」
 
    0--A--C'--B' master 
    \ 
     --1--2--w  dev 
  • 底墊Dev分支(代表所有主提交除B)
 
    0--A--C'--B' master 
      \ 
      --1'--2'--w' dev 

這意味着你不已經被推主到另一個倉庫(否則,這對於那些希望在自己的回購/主分支中獲得主人的合併噩夢)

+0

最後,我在「傷害」之前,對承諾進行了重新定義。但綠蜱是你的。 – Benjol