如何在不初始加载文件和历史记录的情况下克隆/连接远程GIT存储库?

时间:2018-08-03 07:23:02

标签: git

我想为我们的项目准备一个开发VM,其中包含开发人员所需的所有内容(例如IDE,浏览器,工具,书签,GIT存储库等)

由于这是一个已经进行了很长时间的项目,因此存储库的大小已增长到大于3 GB,并且由于我们正在提供微服务,因此并非每个开发人员都需要拥有所有微服务。

为了使初始VM文件的大小保持较小,我想知道如何使用已配置的git存储库“准备” VM(以便开发人员可以通过“ git fetch && git checkout xy”轻松获取其代码)预先提供所有代码。

3 个答案:

答案 0 :(得分:2)

您可以只创建所有回购文件夹并设置遥控器。 这是一个示例:

C:\Users\yogesh\Desktop>md test123
C:\Users\yogesh\Desktop>cd test123
C:\Users\yogesh\Desktop\test123>git init
Initialized empty Git repository in C:/Users/yogesh/Desktop/test123/.git/
C:\Users\yogesh\Desktop\test123>git remote add origin https://github.com/org1/repo1.git

对所有存储库执行此操作。这应该只创建一个空目录,其git repo配置为指向实际的远程仓库。 一旦开发人员需要设置存储库,他们就可以做:

git fetch
git checkout <branch>

答案 1 :(得分:0)

  1. $MIRROR下对存储库进行镜像克隆。例如,$MIRROR可以是/opt/git clone <remote_repo> --mirror -- /opt/mirror_repo$MIRROR也可以位于已安装的设备中。

  2. 每个用户都使用/opt/mirror_repo作为参考进行克隆。 cd /home/userA/;git clone <remote_repo> --reference=/opt/mirror_repocd /home/userB/;git clone <remote_repo> --reference=/opt/mirror_repo

  3. 训练开发人员使用git worktree签出对不同工作树的不同修订,而不是制作新的克隆。如果他们坚持使用新的克隆,请告诉他们总是添加--reference=/opt/mirror_repo

  4. 运行计划的任务以定期更新/opt/mirror_repo,例如每天的00:00。 git --git-dir=/opt/mirror_repo fetch

参考回购可以减少网络和本地存储成本。

答案 2 :(得分:0)

您可以克隆存储库并跳过签出文件:

git clone --depth=1 --no-checkout <url/repo.git>

测试

  1. 普通克隆

    git clone https://github.com/Microsoft/vscode.git
    du -h --max-depth=0 vscode/.git
    

    结果: 162M

  2. 浅克隆

    git clone --depth 1 --no-checkout https://github.com/Microsoft/vscode.git
    du -h --max-depth=0 vscode/.git
    

    结果: 1100万