Git:将本地仓库复制到另一个文件夹

时间:2015-05-23 15:35:54

标签: git github

假设我有一个本地git repo(“A”),其中包含一些我不想发布的提交。

如果我将除了git目录之外的本地仓库“A”中的所有内容复制到一个新文件夹(让我们称之为“B”)并在那里git init另一个repo,是否存在任何混乱的风险首先命名为本地仓库(“A”)并丢失该仓库的提交历史记录?

2 个答案:

答案 0 :(得分:4)

.git子目录将目录转换为git存储库。如果你删除它(或复制除.git子目录之外的所有内容),那么你有一个不是git存储库的项目,并且它没有以任何方式链接到任何git存储库。

在“B”目录中运行git init会创建一个新的git存储库,该存储库不会以任何方式链接到原始存储库(“A”)或任何其他存储库。

但请记住,在git init之后,“B”存储库是一个与旧的“A”存储库不同的项目(具有新的,空的历史记录),并且链接它们(甚至可能)将生成重复的提交和冲突。 (感谢@NickVolynkin指出这一点。)

当你有一些你不想发布的提交时,通常的解决方案是将它们放在一个新的分支上,并记住不要push它。

答案 1 :(得分:1)

使用存档设置复制

从父目录:

cp -a repo-A repo-B

将创建一个不会修改A中任何内容的重复存储库,可能除了atime(取决于您的文件系统),Git无论如何都不会跟踪它。

两个存储库在功能上都是相同的,包括历史记录和未提交的工作。然后,您可以将您喜欢的任何更改独立地发送到任一存储库。

注意事项

如果您使用--shared标记克隆,或设置.git/objects/info/alternates,即使您已创建了归档副本,也可能在存储库之间共享文件。这不是一般情况,但如果您已经完成此操作,则必须注意并采取特殊预防措施。 注意事项。