【问题标题】:How do I contribute to other's code in GitHub? [closed]我如何在 GitHub 中为其他人的代码做出贡献? [关闭]
【发布时间】:2011-05-22 01:12:45
【问题描述】:

我想为GitHub 中的某个项目做出贡献。我应该 fork 吗? 分支呢?推荐什么以及如何做?

【问题讨论】:

标签: git open-source github


【解决方案1】:

理想的你:

  1. Fork项目
  2. 对存储库进行一个或多个注释良好且干净的提交。如果您要修改多个部分或功能,可以在此处创建一个新分支。
  3. 在 github 的 Web 界面中执行 pull request

如果是新的Feature请求,不要先开始编码。记得发布问题来讨论新功能。

如果该功能讨论得很好并且有一些 +1 或项目所有者批准了它,请将问题分配给自己,然后执行上述步骤。

有些项目不会使用拉取请求系统。请与作者或邮件列表联系,了解将代码恢复到项目中的最佳方式。

【讨论】:

  • GitHub 的forkingpull requests 上的详细信息
  • 是的,拉取请求。合并请求是一个很重要的术语。
  • @MariusKavansky 恰恰相反!一旦你知道要做什么,那么只有你贡献:)
  • 在我为一些开源项目做出贡献之后。如果新功能是新功能,我认为打开一个问题来讨论新功能是一个更好的主意。如果这是一个很好讨论的功能或问题,您应该将问题分配给自己,然后执行上述步骤。这是我的 2cents。
  • @hashbrown,他在问到目前为止所请求功能的“列表”在哪里。那些已经被请求和 +1 的功能。
【解决方案2】:

要添加到Yann's answer,一旦你分叉了一个项目,你可以在任何你想要的分支中开发(一个新的,或者来自原始项目的一个)

记住:

【讨论】:

  • 能否在第二点(变基分支)上添加详细信息或链接?
  • @JorgeArtware 我已经用一些说明变基的链接更新了答案。
  • @VonC 我在这里提出一个问题,但如果您认为有必要,我会提出一个全新的问题。除了拥有“直接历史”之外,为什么我要变基而不是合并?换句话说,当我为某些项目做贡献时(在我的特性分支的 PR 被合并到开发和主分支之后),我会这样做:git checkout master;git pull; 与开发相同(我的特性分支首先被合并) 在阅读“pull vs pull --rebase”和“merge vs rebase”之后,我能想到的区别只是平淡的历史。还有什么更深的吗?
  • @grasshopper 就“贡献”(此页面的上下文)而言,您总是希望在推送之前将本地提交重新设置在更新的分支之上:这将使上述贡献变得微不足道,无法由维护者到原始项目分支。在您的问题的上下文中,您的 PR 已被接受,当然,您可以合并而不是变基来更新现有分支。
  • (抱歉刚刚更改了用户名以反映我的 github)-@VonC 谢谢,所以我在 PR 之前阅读的所有关于 rebase 的建议都是有道理的。为了在我的本地 repo 中反映接受和合并的 PR,是否有任何常见做法(变基而不是合并),或者我可以做什么?如果我要提交另一个 PR 怎么办?
【解决方案3】:

为了补充 Yan 和 VonC 的答案,这是来自 github 的一个很好的资源:@​​987654321@

还请务必查看右侧边栏“协作”标题下的内容。

【讨论】:

    【解决方案4】:

    有一个很棒的 Railscast 视频here 可以引导您完成整个过程。它还有许多很好的技巧,例如展示如何确定您在贡献时可能想要处理的分支、使用测试、子模块等。

    虽然此截屏视频主要针对 Rails 开发人员,但大部分信息对于为任何开源项目做出贡献都是有效的。

    【讨论】:

      【解决方案5】:

      Github 有多种方式与项目协作。大多数项目使用的模型是拉取请求模型。我已经启动了一个项目来帮助人们提出他们的第一个 GitHub 拉取请求。可以发教程到make your first PR here

      工作流程很简单

      • fork github 中的 repo
      • 将 repo 克隆到您的机器上
      • 创建一个分支并进行必要的更改
      • 将您的更改推送到 GitHub git push origin branch-name 上的 fork
      • 转到 GitHub 上的 fork 以查看 Compare and pull request 按钮
      • 点击它并提供必要的详细信息

      【讨论】:

        【解决方案6】:

        lornajane 有一篇博文很好地解释了这个过程: http://www.lornajane.net/posts/2010/contributing-to-projects-on-github

        【讨论】:

          【解决方案7】:

          技术工作流程

          我建议以下工作流程:

          1. fork 存储库(通过 GitHub 网页界面:“Fork”按钮)

          2. 在您的分叉存储库中,复制 URL

          3. 克隆(在命令行中)

            git clone <url-from-your-workspace>

          4. 进入刚刚创建的目录,创建一个分支

            cd <directory> git checkout -b <branchname>

          5. 现在进行更改

          6. 您可以在每次更改后创建一个或多个提交:

            git add .; git commit

          7. 完成后,推送您的更改

            git push origin &lt;branch&gt;

          8. 在你的命令行中,你应该see a URL to create the PR。访问 URL 并单击按钮以创建 PR。

          9. 如果没有,请在浏览器中访问存储库,它会为您提供一个用于创建拉取请求的按钮

          就是这样。

          因此,基本上,您将存储库 fork 到您的工作区,创建了一个新分支并推送了该新分支。

          如果您稍后从同一个克隆仓库创建更多 PR,您应该在为另一个 PR 创建另一个分支之前进行同步(从原始仓库获取最新更改):

          git checkout master
          git remote add upstream <url-of-original-repo>
          git pull upstream master
          

          其他注意事项:

          • 项目可能有贡献指南:查找文件 CONTRIBUTING.rst 或 .md
          • 您可能需要遵循项目的编码指南
          • 您可能希望首先将您的想法概述为问题
          • 您可能需要查看项目的 Pull Requests 选项卡并检查是否有打开的 PR、合并的 PR

          这些建议是为了让您免于将工作放入不会合并的 PR 中的麻烦。如果项目中有活动并且 PR 被合并,这是一个好兆头。如果有贡献指南,请遵循它们。

          始终保持礼貌。请记住,项目的维护者没有义务合并您的 PR。你有什么有价值的东西要添加到项目中吗?

          【讨论】:

          • 详细的过程(比我 9 岁的答案更精确)。赞成。
          猜你喜欢
          • 2022-06-13
          • 1970-01-01
          • 2015-05-09
          • 1970-01-01
          • 2013-01-08
          • 2019-10-02
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多