8

我想在我们公司的 git 上建立特定的流程。

  1. 开发人员在他的本地机器上创建一个分支并在那里提交一些文件。
  2. dev 将此分支推送到远程仓库
  3. 其他开发者无法访问此分支
  4. 经过几轮推动开发人员决定发布他的更改。
  5. 将他的私人分支合并到公共分支
  6. 推动那个公共分支。

换句话说 - 是否可以在公共存储库中配置私有远程分支?

4

2 回答 2

11

我的团队中使用的流程是除了主 git 服务器上的源之外,还为每个团队成员提供完整的单独存储库。

  1. Dev 在本地机器上创建本地分支并提交
  2. 在一天结束时(或在合适的时候),开发者推送到他的私人仓库git push jdoe-private my-cool-branch
  3. Dev 决定他对作品的出版和可能的合并感到高兴,因此可以整理并重新调整它而不受惩罚
  4. 开发者将他的分支推到原点git push origin my-cool-branch

对我们来说,这种设置的基本原理是允许开发人员自由地变基并避免上游变基可能出现的问题,并且还可以进行完整备份。单独的存储库仅按照惯例是私有的,但如果需要,可以很容易地添加访问控制。有很多重复的数据,但除非你的 repo真的很大,否则这可能不是问题。

于 2015-01-30T15:41:37.273 回答
2

我知道的常见解决方案是通过在分支名称前添加一些字符串来就“分支名称空间”达成一致。例如,以“private/”开头的分支用于私人实验。然后你会得到像

  • 私人/JohnDoe/重构-taxcalculation
  • 私人/JohnDoe/newGUILayout
  • 私人/JaneJones/Java8
  • 私人/TKirk/建造宇宙飞船

这使分支保持独立,并清楚地表明它们的目的是什么。但是,这样分支仍然是公开的,因为任何人都可以看到并拉动它们。

如果你想根据用户限制对这些分支的访问,你需要有某种基于分支的访问控制。核心 git 中没有这样的东西,但一些 git 托管服务器允许这样做(例如 Atlassian Stash)。我不知道有任何服务器允许这种私有分支,但也许有一个允许它或让您编写解决方案。

但是请注意,您所要求的内容非常不寻常。常见的解决方案是我上面概述的解决方案。

于 2015-01-30T14:55:03.770 回答