簡體   English   中英

克隆/復制到新的倉庫版本1至n(即直到指定的版本,而不是當前版本)

[英]clone/copy to a new repo revisions 1 through n (i.e., up through a specified revision, but not to the current revision)

考慮以下存儲庫:

代表倉庫的圖像

您可以看到我們有7個修訂版(計算C0,初始回購狀態)。 這是我要完成的工作:我們想復制存儲庫,但只包括C0到C3的修訂版。

從概念上講,這對我來說就像一個git clone操作,但僅限於前4個修訂版。 我們想要一個新的存儲庫,該存儲庫保留有關提交C0,C1,C2和C3的歷史記錄信息,但不包括此后的所有內容。

我最初以為帶有“ depth”參數的git clone可以工作,但是那可以讓您從最新版本開始並向后工作,對嗎? 我要做的是從最早的修訂版本開始,然后進行3個修訂版本。

因此,我當時認為可能將git clone與修訂選擇一起用於一系列提交。 我嘗試了幾種不同的范圍選擇,包括git clone {url} c0...c3 但是git只是將范圍解釋為目標文件夾,可以創建一個名為c0...c3的文件夾並將存儲庫克隆放置在該文件夾中。

是否可以復制存儲庫,並且僅獲取修訂版0到n 就我而言,沒有分支要處理,這是一個直線回購。

我們將從C3的回購代碼開始創建一個新產品。 它將永遠不會合並回源項目,因為它將完全分散。 如果兩個項目之間有任何代碼共享,那么就git而言將是“離線”。

我知道我們可以從C3分支出來,但我們非常希望將存儲庫分開。 話雖這么說,也許分支是創建干凈倉庫的解決方案的一部分? 分支,克隆分支,然后刪除祖先分支中不存在的所有內容? 但是我不確定是否可以或如何完成刪除。

背景:知識產權糾紛。 我們知道,C3和先前版本的所有內容都是“純凈的” IP,並且對C4和后續版本的所有權存在疑問。 我們希望保持當前項目不變(並讓各方對此爭執),然后從已知的“干凈”提交繼續進行。 如果我們只是分支並繼續在同一個倉庫中工作,那么對於IP爭端來說有點“太過舒適了”。 我們可以做的一切將自己與C4分開並向前邁進對我們都有利。

您始終可以從任何特定的提交中創建一個新分支。

git checkout -b new_branch <sha-of-C3>

所以現在,這個new_branch完全干凈了。


用它創建一個新的倉庫很簡單-只需在github上創建一個新倉庫(比如https://github.com/Josh/newrepo ),然后將此倉庫作為遠程倉庫添加到現有倉庫中,如下所示:

git remote add newrepo https://github.com/Josh/newrepo

而現在,推new_branch這個new_repo

git push newrepo new_branch:master


這將創建一個分支masternewrepo ,這將是一樣的new_branch 驗證一切正常之后,您可以刪除現有的repo並從newrepo的新克隆newrepo

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM