我可以将Git工作副本复制到另一台机器上吗?

mftmpeh8  于 2023-02-18  发布在  Git
关注(0)|答案(5)|浏览(248)

我正在使用'git svn clone'从SVN服务器创建一个Git工作副本,但这需要花费相当长的时间(我们有〉20.000个rev和将近10.000个文件)。我有一些其他的机器(为其他开发者),我想以同样的方式设置。有没有可能将生成的文件从第一台机器复制到其他机器上,以便花费更少的时间?
换句话说,Git工作副本中是否有任何东西将它与创建它的机器联系在一起?
谢谢。

7gs2gvoe

7gs2gvoe1#

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

xqk2d5yq

xqk2d5yq2#

另外值得一提的是,如果你没有本地修改(“git status”没有显示任何你想保留的内容),你可以 * 只 * 复制.git目录,然后从最后的(几乎空的)仓库根目录执行“git checkout .”。
如果链接速度慢,那么在传输之前重新打包存储库也是值得的。
我唯一有点担心的是git-svn是否记住了一些你不想拷贝给其他开发者的用户信息.

eblbsuwk

eblbsuwk3#

不,只复制repo的根目录就行了,只要确保你也得到了任何不可见的文件,* 特别是 * .git目录(在项目的根目录下),它包含了repo的所有配置信息。

vs91vp4v

vs91vp4v4#

如果您使用工作树功能,它将中断,因为该功能使用绝对路径。yourworktreefolder/.git指向parentgitabsolutepath/.git/worktrees/yourworktreename
但是很容易修复,只需更新yourworktreefolder/.git中的路径,使其指向新的父路径。

c86crjj0

c86crjj05#

我刚刚在非常类似的SVN --〉Git迁移场景中尝试了同样的策略,但是我遇到了一个“可疑的所有权错误”。
我们使用的策略是我用git SVN克隆repo来导入修订历史,让每个人都在SVN中拉取更新,最后做一次git svn fetch/rebase来让git repo最后一次与SVN同步.然后,我从我的本地仓库压缩.git文件夹并通过电子邮件发送给所有团队成员.这样当.git文件夹被放置在项目目录的根目录下时,远程分支和上游分支将被预先配置,我们将不必经历从头配置和建立新项目的麻烦,因为该项目是旧的并且花费很多时间来使新项目实际运行,并且(理论上)它将仅识别每个人具有的未决改变,从而消除了我们具有清楚的工作目录的需要。
然而,当我们将该文件夹解压到项目中时,它拒绝将其识别为git repo,因为存储库链接到我和我的计算机,声明“Fatal:可疑所有权错误”
我能想到的唯一解决办法就是
1.要让每个人从Github克隆整个repo,请将克隆目录中的.git文件夹复制到部署的项目中,因为.git文件夹将分配给每个用户。
1.我在每个人的计算机上运行命令git config --global --add safe.directory <absolute path to project directory>,但我读到过这可能有缺陷。

相关问题