2013-05-29 46 views
0

我想使用獲得的包來鏡像大型存儲庫的一部分。 我的計劃是創建一個新的分支,並從中刪除不相關的文件。但是這個分支的分支包含分支之前的歷史記錄,包括所有被刪除的文件。git bundle版本庫的一部分

有沒有一種方法來創建一個沒有這些「剩菜」的包?

P.s.將模塊拆分成子模塊是不現實的,因爲刪除的文件是跨目錄傳播的。 此外,這些文件應保留在存儲庫的主分支中。

回答

1

重寫歷史記錄的唯一方法(我知道)是做一個交互式重新分配和刪除所有你不想要的行。該過程基本上重放了您選擇的修改的開發歷史記錄。如果你回到很長的路上,這有點毛骨悚然,並且你在這個過程中早做出的選擇可能會迫使你稍後解決很多衝突。

最終結果是一個新的分支(您確實保留了原始分支的備份,對嗎?)看起來有完全相同的內容,但是通過完全不同的路線到達那裏。這意味着每個提交將具有不同的SHA,並且兩個分支將而不是兼容用於合併目的。

基本上,我會而不是這樣做,除非問題變化是最近的,並且所有的存儲庫用戶同意將開發遷移到新的分支。

如果我只是想能夠查看最近的歷史記錄併發布補丁文件,而不移動太多數據,那麼我會使用淺的克隆。

1

你需要一個--orphan分支,然後「重訂」所需要的歷史上它(僞造了你想先重建基礎,所以你有一個開始/結束點的分支,並指出,重訂不包括默認合併)

然後你應該可以綁定新的孤立分支。

或者嘗試git-archive - 從命名樹創建文件的存檔。