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

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

我对使用 git 还很陌生,想知道是否可以使用常见的 UNIX 命令(如cptar/ untag)来复制 Git 存储库,而不是通过git clone

我的情况是,我有一个生产环境(python 虚拟),其中的一些代码在 git 中签出。我想知道从 git 的角度来看,使用tar或其他东西复制整个环境是否是个坏主意。这种方法对于快速复制代码库/环境很方便。

我担心的是,git clone 可能会将一些唯一的 ID 与工作副本关联起来,如果存在两个工作副本,其中一个是从另一个文件系统复制而来,则可能会引起冲突。

答案1

非常好。

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

从技术上讲,git它可以在到处复制存储库的情况下正常运行,因为 DCVS 的整个意义在于它不需要知道任何给定存储库之外发生的事情事实上,除非你告诉它,否则它不会

同样的原则也适用于此。

答案2

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

答案3

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

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

cp -r -L <source-repo-dir> <destination-repo-dir>

答案4

没问题,但是如果你要与其他人共享你的仓库,请考虑以下几点

  • 您的config文件可能包含其他人可能不关心的遥控器。
  • 您的logs文件夹将包含您可能不想共享的引用。Git 非常擅长让您在计算机上执行一些令人讨厌的操作,直到您对最终结果感到满意,然后将其推送到远程以(偶尔)共享它。其中一些令人讨厌的历史记录可能在您的引用日志中,因此在我看来最好不要共享它。
  • 您的info/exclude文件可能仅忽略某些文件想要忽略。
  • 您还可以拥有钩子、分支以及一堆其他个人的东西,而您不愿意分享……

相关内容