在GitHub上分享私人仓库有什么好处吗?

时间:2016-04-25 14:17:22

标签: git github

我是在一家小公司从事私人GitHub回购的少数开发人员之一。回购邮件是由我们的老板在他的GitHub帐户下创建的,所有开发人员都可以通过它来访问它。

正如您所知,即使您没有付费订阅,也可能会将主要回购分叉,并且分叉将保持私有状态。并且每个添加到原始仓库的人都会自动添加到fork的观察者列表中(我不知道为什么)。

这是我前一段时间出于好奇而做的事情(我不知道我能做到这一点),因为我认为保持我的工作进展中的分支和临时的东西会很好主要回购以保持清洁。但是今天我的老板问我为什么要这样做,除了我上面所说的,我无法想出一个很好的理由。

有没有充分的理由在GitHub上派一个私人仓库而不是直接推送到主仓库?

4 个答案:

答案 0 :(得分:4)

如果他不允许您直接为此存储库做出贡献,那么需要分配您的老板的存储库的一个原因。但是,由于他允许您直接访问,因此没有明确需要进行分叉。正如@Diego指出的那样,GitHub喜欢让用户从他们自己的仓库中推送和拉出,然后通过拉取请求将更改提交给上游仓库。但是,不需要分叉来检查更改。一个简单的替代方法是在老板的远程存储库中创建功能分支,让他查看这些更改。

答案 1 :(得分:2)

我认为你想要私人叉子的最佳描述是Atlassian's explanation of the forking workflow。以下是我们如何处理存储库,分支和拉取请求。它可以很好地扩展到少数开发人员之前,并且在合并之前保持隔离。

设置本地工作副本:

  1. 贵公司拥有一个带有一个或多个私有存储库的中央付费GitHub帐户。这些包含了存储库的“黄金副本”。此存储库还与TeamCity等持续集成(CI)工具以及自动部署工具相关联。

  2. 中央公司资料库有两个分支。 “master”分支是生产中的,“development”是部署到QA服务器的内容。您甚至可能拥有第3个长期分支用于“临时”服务器。

  3. 开发人员将存储库分配到他们自己的个人GitHub帐户。

  4. 开发人员将使用git clone git@github.com:username/reponame从他们的个人分叉克隆到他们的硬盘。这将使“起源”指向他们的个人分支。

  5. 开发人员还添加了指向公司存储库的“上游”(命名约定)。这是通过git remote add upstream git@github.com:company/reponame完成的。

  6. 这是新工作副本设置的结束。现在我们可以完成日常工作。

    1. 对于开发人员,在创建新功能分支之前,他们应该使用

      更新其本地开发分支
      git fetch upstream && git checkout development && git merge
      --ff-only upstream/development && git push origin development
      ```.
      
    2. 在开始修复问题或添加功能之前,在本地工作副本中创建功能分支。这可以通过

      完成
      git checkout development && git checkout -b new-branch-name
      

      (如果我正在处理GitHub问题,我的分支名称为'i #### - issue-description',其中####是GitHub问题编号。)

    3. 在本地开始处理功能分支,进行提交。您可以选择立即将它们推送到“origin”(GitHub上的个人分支)。

    4. 一旦您对功能/修复分支感到满意并将其推送到“原点”,您将创建一个GitHub Pull Request(PR)以将其合并到公司存储库的“development”分支中。这为您提供了一个很好的用户界面来查看更改,验证它们是否会干净地合并到公司存储库“developpement”分支中。如果您正在使用CI,那么在允许合并之前,您还可以在代码上运行GitHub运行单元/集成测试。

    5. 将功能分支合并到公司存储库后,您的本地工作副本或个人分支中不再需要它。但是,在将更改部署到生产环境后,我通常会将它们保留2-3个月。

    6. 我们通常在“开发”分支上进行质量检查,然后将PR从“开发”转变为“主”进行最终部署。

    7. 有时候你会发生合并冲突,你需要重新设置你的功能分支。

      1. 使用

        将“开发”的最新副本下载到您的工作副本中
        git fetch upstream && git checkout development && git merge --ff-only upstream/development && git push origin development
        
      2. 使用git checkout branch-name再次检出您的功能分支。

      3. 使用git rebase development执行变基。

      4. 使用git push --force origin branch-name强制将重新分支的分支推送到原点。

      5. GitHub PR现在应该表明它与公司存储库中的“development”分支没有冲突。

答案 2 :(得分:1)

通常使用fork来为您没有写入权限的回购做出贡献。

在你的情况下,因为你是所有贡献者,所以不需要分叉。

如果我想贡献回购,而我不是贡献者,我希望提交拉动请求,我将从我的分支中做到。

  

创建“fork”正在生成其他人项目的个人副本。

     

Forks充当原始存储库和个人副本之间的桥梁。

     

您可以提交Pull Requests,通过提供原始项目的更改来帮助改善其他人的项目。

     

分叉是GitHub社交编码的核心。

答案 3 :(得分:0)

如果您推送到主存储库,您将失去对拉取请求进行审核,评论并最终由控制存储库的任何人合并的能力。

相关问题