在特定提交时克隆 git repo

萨米奇

作为我们当前工作流程的一部分,我们在创建时将某些 git 存储库预克隆到用户主目录中。然而,随着这些存储库的增长和用户数量的增加,磁盘使用变得越来越成问题。

我在两个方面对此进行攻击:

  1. 没有更改文件的现有存储库git reset --hard $first_commit将它们恢复到更小的初始状态。git pull登录时通常会像往常一样使它们保持最新状态。
  2. 新用户获得开始于的存储库,$initial commit并且可以通过git pull.

虽然我已经为 #1 提出了一个解决方案并将其提交审查,但我在为 #2 提出一个不会产生大量 IO 开销的解决方案时遇到了麻烦。

简单的解决方案就是:

git clone /opt/git/app.git /home/user/app && \
git -C /home/user/app reset --hard $first_commit

然而,检查完整的工作树只是为了删除它会导致大量额外的 IO,当创建新的应用程序服务器和所有必需的用户时,这是一个有效的问题。

我已根据此答案尝试了以下操作,但未正确设置生成的存储库以从中提取origin/master

git init /home/user/app
git -C /home/user/app remote add origin /opt/git/app.git
git -C /home/user/app fetch origin $first_commit

它似乎根本没有以某种方式设置任何分支,并且缺少以下内容.git/config

[branch "master"]
        remote = origin
        merge = refs/heads/master

提前致谢。

赖-

使用git branch --set-upstream-to到组master的上游:

git init
git remote add origin /opt/git/app.git
git fetch origin
git reset --hard "$first_commit"
git branch --set-upstream-to=origin/master

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章