使用基本的Unix命令复制(不克隆)git存储库是否可以?


22

我很擅长使用git,并且想知道是否可以使用常见的UNIX命令(如/ cp或)复制Git存储库,而不是通过。 taruntaggit clone

我正处于这样的情况:我有一个生产环境(python虚拟),其中一些代码在git中检出。我想知道从git的角度来看,用一个tar什么东西来复制整个环境是不是一个坏主意。这种方法可以方便地快速复制代码库/环境。

我担心的是,git clone可能会将一些唯一的id与工作副本相关联,这可能会导致冲突,如果存在两个工作副本,其中一个是从另一个文件系统复制的。


哇我是在这种情况下,因为我有一些源代码控制下的文件,有些没有,我有我需要保留的文件权限。我很高兴你问这个问题。
Joe C

Answers:


21

这很好。

git 在现场存储其所有历史,提交等 - 这是DCVS的基本属性。

从技术上讲,git可以操作只是复制库运行到处罚款,因为DCVS的整点是,它并不需要知道发生了什么事情在任何给定资料库之外而事实上并没有,除非你告诉它

同样的原则适用于此。


1
我的理解是克隆的存储库将包含一个返回父级的链接。使用OS复制命令不会创建该链接。
托尼

@Tony True,但您可以通过使用来删除该链接git remote remove origin,这会阻止Git将父存储库用作上游。
new123456 2015年

2

您应该能够将整个工作目录复制到系统上的任何其他位置,并在使用Git,Hg或SVN时使其继续正常运行。我无法评论其他SCM。


0

这是一个更不寻常的用例,但......

我已经看到该repo实用程序在.git目录中创建符号链接。在这种情况下,当您进行复制时,您需要确保取消引用符号链接。例如:

cp -r -L <source-repo-dir> <destination-repo-dir>
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.