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