(这个问题建立在How do I update my bare repo? and git fetch doesn't fetch all branches。)
我从 GitHub 克隆了一个裸存储库,其想法是:
- 开发者使用 GitHub,并推送到 Github。
- 在服务器上,上述裸仓库从 GitHub 获取(比如,
/var/repo/my_repo
) - 裸仓库被克隆到一个或多个“文档根”位置以进行 Web 服务,以方便对代码库的各种检查。因此,
/var/www/my_repo_live
两者/var/www/my_repo_dev
都是非裸克隆,/var/repo/my_repo
但具有不同的分支或标签已签出以供服务。
我似乎遇到了一些复杂性——来自git clone
手册页:
- 使用时
--bare
,“远程的分支头直接复制到对应的本地分支头,不映射到refs/remotes/origin/
.” - “既没有创建远程跟踪分支,也没有创建相关的配置变量。”
这是有道理的:由于您不会在裸存储库中进行编辑,因此您不需要将远程跟踪与本地跟踪分支分开。但是之后:
- 你应该怎么取?
- 鉴于远程分支头直接复制到相应的本地分支头,你如何设置你的
remote.$remote_name.fetch
refspec?应该只是fetch = +refs/heads/*:refs/heads/*
?
PS/var/repo/my_repo
出于许可原因,我将与文档根存储库分开。我不希望面向公众的www-data
进程有权访问链接到 GitHub 的存储库。这是矫枉过正吗?不管它是否矫枉过正,我仍然想知道如何使用裸仓库正确管理获取。