簡體   English   中英

Git:將本地存儲庫復制到另一個文件夾

[英]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.

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