用于工作区,我试图做一个裸克隆,但远程分支是映射到远程跟踪分支。Git克隆 - 创建一个裸露的克隆,但与远程跟踪分支(工作树'主'回购)
我正在尝试设置一个通用工作树工作流程。我的回购真的很大,所以克隆它非常昂贵。即使使用硬链接,由于回购得到gc
ed,它们往往会随着时间的推移而分化并占用额外的空间,而在一个回购库中取回对另一回购没有帮助,所以在工作中工作似乎是显而易见的事情。 (你必须在此相信我。)
工作区需要一个实际存放对象的“主”回购。显然,这个克隆不能被删除,所以我想把它放在类似/var/cache/git/reponame.wt.git
的地方。 (我正在为我和我的同事制定一个通用的解决方案,所以我必须使其相当安全)。
I 可能使它成为一个常规克隆,但它必须检出一个分支然后该分支不能被任何其他工作树检出,所以我必须制作一个可能会让人困惑的虚拟分支(例如wt_dummy
)。我真正想做的是使主要回购bare
回购。
问题是,git clone --bare
不创建远程跟踪分支。所以,做一个“裸回购,但与远程跟踪分支”,我已经开始这条道路
git clone --bare <remote> repo.tmp
mv repo.tmp.git reponame.wt.git
cd reponame.wt.git
git config core.bare true
git config --remove-section branch.master
... and I'm not quite there yet ...
但)它似乎过于漫长而复杂的,和b)git仓库仍然认为它已经master
查了出。
有没有更好的方法来使这个“遥控裸露克隆”?
(也许有更好的方法来设置一般worktrees,但我明白,得到的堆栈溢出的“特定的编程解决方案”范围的毛茸茸的边缘。)
“*我可以使它成为一个常规的克隆,但它必须检出一个分支,然后该分支不能被任何其他工作树检出,所以我必须创建一个虚拟分支(例如wt_dummy)这可能会使人们感到困惑*“为什么你不创建一个空的提交并在非裸仓库中检出它(作为分离的HEAD)? – Leon
一个合理的想法。你甚至可以做'git clone --no-checkout --branch v1.0 reponame.wt'来给你一个没有签出但是头部指向'v1.0'标签的repo。 –
Mort