【问题标题】:Can I copy a Git working copy onto another machine?我可以将 Git 工作副本复制到另一台机器上吗?
【发布时间】:2011-01-03 18:56:45
【问题描述】:

我正在使用“git svn clone”从我们的 SVN 服务器创建一个 Git 工作副本。但这需要相当长的时间(我们有 > 20.000 转和近 1​​0.000 个文件)。我有一些其他机器(供其他开发人员使用),我想以相同的方式进行设置。是否可以将第一台机器上的结果文件复制到其他机器上,从而节省时间?

换句话说,Git 工作副本中是否有任何东西将其与创建它的机器联系起来?

谢谢。

【问题讨论】:

  • 可以,但不需要复制完整的工作树。您可以只复制没有工作树的 .git 文件夹(即作为“裸”存储库),然后在另一台机器上签出最新的工作树。

标签: git git-svn


【解决方案1】:

如果您使用工作树功能,它将中断,因为该功能使用绝对路径。 yourworktreefolder/.git 指向parentgitabsolutepath/.git/worktrees/yourworktreename

但很容易解决,只需更新yourworktreefolder/.git 中的路径,使其指向新的父路径即可。

【讨论】:

    【解决方案2】:

    最好复制包含 .git 文件夹的基本目录,因为您可能有 gitignore 文件,否则这些文件将不会被保留。

    【讨论】:

      【解决方案3】:

      还值得一提的是,如果您没有本地更改(“git status”没有显示您想要保留的任何内容),您可以复制 .git 目录并执行“git退房 。”从最后的(几乎是空的)存储库根目录中。

      如果它是一个缓慢的链接,那么在传输之前重新打包存储库也是值得的。

      我唯一有点担心的是 git-svn 是否会记住一些您不想复制给其他开发人员的用户信息。

      【讨论】:

      • 我的姓名和电子邮件地址确实出现在 .git/logs/refs/remotes/trunk 中。尽管该目录被命名为“日志”,但我想知道这是否会成为其他开发人员的问题...
      【解决方案4】:

      不,只需复制 repo 的根目录就可以了。只需确保您也获得任何不可见的文件,尤其是.git 目录(在项目的根目录中),其中包含 repo 的所有配置信息。

      【讨论】:

        【解决方案5】:

        你可以复制它,一切都在 .git 文件夹中,不依赖于其他任何东西。

        【讨论】:

        • 几乎是真的。除了可能引用外部程序的自定义差异驱动程序和挂钩脚本等配置项之外,还有一些简单的配置项通常因平台而异。在不同平台之间复制时,应该检查/设置/取消设置 core.ignorecase、core.autocrlf、core.safecrlf、core.fileMode(可能还有其他一些)等项目。我认为从复制的 .git 目录重新克隆应该总是安全的。
        • 刚刚克隆了我的整个开发环境,其中包含 4 个存储库,只需将其复制几次并使其成为自己的分支。工作完美。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-12-24
        • 2016-08-15
        相关资源
        最近更新 更多