[英]Git: copying a local repo to another folder
假設我有一個本地git repo(“ A”),其中包含一堆我不想發布的提交。
如果我將本地目錄“ A”中的所有內容(除了git目錄之外)復制到新文件夾中(我們將其稱為“ B”),然后在其中git init另一個目錄中進行復制,是否有可能以某種方式弄亂第一個命名的本地回購(“ A”)並丟失該回購的提交歷史記錄?
.git
子目錄將目錄轉換為git
存儲庫。 如果將其刪除(或復制除.git
子目錄以外的所有內容),則您的項目不是git
存儲庫,並且不會以任何方式鏈接到任何git
存儲庫。
在“ B”目錄中運行git init
會創建一個新的git
存儲庫,該存儲庫未以任何方式鏈接到原始存儲庫(“ A”)或任何其他存儲庫。
但是請記住,在git init
,“ B”存儲庫與舊的“ A”存儲庫是一個不同的項目(具有新的,空的歷史記錄),將它們鏈接(甚至可能)將產生重復的提交和沖突。 (感謝@NickVolynkin指出這一點)。
當您不想提交某些提交時,通常的解決方案是將它們放在新的分支上,並記住不要push
它。
從父目錄:
cp -a repo-A repo-B
將創建一個重復的存儲庫,該存儲庫不會修改A中的任何內容,但可能會更改atime(取決於您的文件系統),但Git始終不會跟蹤。
兩個存儲庫在功能上都是相同的,包括歷史記錄和未提交的工作。 然后,您可以獨立地對任一存儲庫進行任何所需的更改。
如果使用--shared
標志進行克隆,或者設置了.git/objects/info/alternates
,則即使創建了歸檔副本,也可能在存儲庫之間共享文件。 這不是一般情況,但是這是一個例外,您必須意識到這一點,並采取特殊的預防措施。 買者自負。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.