在 git 中的远程存储库上创建私有分支

Create private branch on remote repository in git

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

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

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

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

这样的分支
  • private/JohnDoe/refactoring-taxcalculation
  • private/JohnDoe/newGUILayout
  • private/JaneJones/Java8
  • private/TKirk/build-spaceship

这使分支保持独立,并明确了它们的用途。但是,这样树枝仍然public,因为任何人都可以看到并拉动它们。

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

但是请注意,您的要求很不寻常。常见的解决方案是我上面概述的那个。

在我的团队中使用的流程是,除了主 git 服务器上的源之外,每个团队成员都有完整的独立存储库。

  1. Dev 在本地机器上创建本地分支并提交
  2. 在一天结束时(或任何合适的时候)开发者推送到他的私人仓库 git push jdoe-private my-cool-branch
  3. Dev 决定他很高兴该作品被发布并可能被合并,因此可以对其进行整理并对其进行 rebase 而不受惩罚
  4. Dev 将他的分支推送到 origin git push origin my-cool-branch

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