我正在使用"git svn clone"从我们的SVN服务器创建Git工作副本,但这需要相当长的时间(我们有> 20,000个版本和近10,000个文件)。我有其他一些机器(给其他开发人员使用),我想以相同的方式设置。是否可以复制第一台机器上的结果文件,以便节省时间?
换句话说,Git工作副本中是否有任何内容将其绑定到创建它的计算机上?
谢谢。
不用担心,只需复制存储库的根目录即可。请确保获取任何不可见文件,尤其是项目根目录中包含所有存储库配置信息的.git
目录。
如果您使用worktrees功能,它将会出现问题,因为该功能使用绝对路径。yourworktreefolder/.git
指向parentgitabsolutepath/.git/worktrees/yourworktreename
但是很容易解决,只需更新yourworktreefolder/.git
中的路径,使其指向新的父路径即可。
我曾尝试在类似的 SVN --> Git 迁移场景中使用相同的策略,但遇到了“可疑所有权错误”。
我们采用的策略是,我使用 git SVN 克隆了仓库以导入修订历史记录,让每个人在 SVN 中拉取更新,并进行最后一次 git svn fetch/rebase,使得 git 仓库与 SVN 同步。然后,我将本地仓库中的 .git 文件夹压缩并通过电子邮件发送给所有团队成员。这样,当将 .git 文件夹放置在项目目录的根目录中时,远程和上游分支将被预配置,我们不必费力地从头开始配置和设置新项目,因为该项目很旧,启动一个新项目需要很多工作,而且它(理论上)只会识别每个人所拥有的待处理更改,从而消除了我们必须清空工作目录的需要。
然而,当我们将文件夹解压缩到项目中时,它拒绝将其识别为 git 仓库,因为该仓库与我的计算机相关联,显示“致命错误:可疑所有权错误”。
我能想到的唯一解决方法是
让每个人从Github上克隆整个repo,然后将克隆的目录中的.git文件夹复制到部署的项目中,因为该.git文件夹将被分配给每个用户。
在每个人的计算机上运行命令git config --global --add safe.directory <绝对路径到项目目录>
,但我已经读到这可能会有bug。
.git
文件夹而不带工作树(即作为“裸”仓库),然后在另一台机器上检出最新的工作树即可。 - Ben James