作为我们当前工作流程的一部分,我们在创建时将某些git repos预先克隆到用户homedirs中。但是,随着这些存储库的增长和用户数量的增加,磁盘使用率变得越来越成问题。
我在两个方面攻击这个问题:
git reset --hard $first_commit
,使其恢复到更加微小的初始状态。登录时通常的git pull
会一如既往地使它们保持最新状态。$initial commit
开始的回复,并且可以通过git pull
提升到最新状态。虽然我已经为#1提出了一个解决方案并提交给我审核,但是我很难找到一个不会产生大量IO开销的#2解决方案。
简单的解决方案就是:
git clone /opt/git/app.git /home/user/app && \
git -C /home/user/app reset --hard $first_commit
但是,检查完整工作树只是为了删除它会产生大量额外的IO,这在与所有必需用户一起创建新的应用服务器时是一个有效的问题。
我已根据this answer尝试了以下内容,但由此产生的回购未正确设置为从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
提前致谢。
答案 0 :(得分:1)
使用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