gpt4 book ai didi

Git clone - 创建一个裸克隆但带有远程跟踪分支(用于工作树 'main' repo )

转载 作者:行者123 更新时间:2023-12-01 22:22:40 24 4
gpt4 key购买 nike

为了与工作树一起使用,我尝试制作一个裸克隆,但远程分支映射到远程跟踪分支。

我正在尝试建立一个通用的工作树工作流程。我的仓库真的很大,所以克隆它很昂贵。即使使用硬链接(hard link),当 repo 得到 gced 时,它们往往会随着时间的推移而发散并占用额外的空间,并且在一个 repo 中获取对另一个 repo 没有帮助,因此在工作树中工作似乎是显而易见的要做的事。 (在这一点上你必须相信我。)

工作树需要一个实际保存对象的“主要”存储库。显然,不能删除那个克隆,所以我想把它放在像 /var/cache/git/reponame.wt.git 这样的地方。 (我正在为我和我的同事制定一个通用的解决方案,所以我必须让它变得万无一失。)

可以让它成为一个普通的克隆,但是它必须有一个分支被 checkout ,然后那个分支不能被任何其他工作树 checkout ,所以我必须做一个虚拟分支(例如 wt_dummy)可能会使人感到困惑。我真正想做的是让主 repo 成为一个 bare repo 。

问题在于 git clone --bare 不会创建远程跟踪分支。所以为了制作一个“裸 repo 但有远程跟踪分支”,我已经开始走这条路

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 ...

但是 a) 它看起来太长太复杂,并且 b) git 存储库仍然认为它有 master checkout 。

有没有更好的方法来制作这个“带 Remote 的裸克隆”?

(也许通常有更好的方法来设置工作树,但我知道这会触及堆栈溢出的“特定编程解决方案”范围的毛边。)

最佳答案

您可以配置裸存储库以具有远程跟踪分支:

git config --local --add remote.origin.fetch "+refs/heads/*:refs/remotes/origin/*"

运行 git fetch 你应该可以通过 git branch -a 看到它们。

我认为在存储库中 check out master(或另一个分支)是不可能的,但是对于裸存储库,创建链接是安全的无论如何,它的工作树,例如:

git worktree add --force <path> master

即使 master 在裸存储库中 checkout ,如果存储库是裸存储库,它也没有主工作树,因此您最终不会得到两个不同步的工作树。

关于Git clone - 创建一个裸克隆但带有远程跟踪分支(用于工作树 'main' repo ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38981470/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com