我如何在 GitHub 中为其他人的代码做出贡献? [关闭]

Posted

技术标签:

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

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

【问题讨论】:

我在 Github 上写了一个更详细的关于为 Concrete5 贡献的分步指南,但是这个过程可以适用于任何项目。 Check it out. 检查github.com/joindin/joind.in/wiki/How-to-Contribute-Code 或许有足够的多数票,应该允许之前关闭的问题再次复活,并让人们再次为线程贡献。 @wizztjh,另一个简单的教程:pontikis.net/blog/… 这是一个动手教程github.com/Roshanjossey/first-contributions 【参考方案1】:

理想的你:

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

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

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

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

【讨论】:

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

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

记住:

将原始项目添加为远程项目(不同的形式“origin”,因为origin 将是您自己的存储库,这是分叉的结果) 将您的分支重新设置在您想要贡献的原始存储库的分支之上。 您的拉取请求会导致快进合并,这一点很重要。 参见例如: “Pull new updates from original Github repository into forked Github repository”。 “Update of forked repository on github” “Git working fork with updates”

【讨论】:

能否在第二点(变基分支)上添加详细信息或链接? @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】:

技术工作流程

我建议以下工作流程:

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

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

    克隆(在命令行中)

    git clone <url-from-your-workspace>

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

    cd <directory> git checkout -b <branchname>

    现在进行更改

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

    git add .; git commit

    完成后,推送您的更改

    git push origin &lt;branch&gt;

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

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

就是这样。

因此,基本上,您将存储库 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 岁的答案更精确)。赞成。

以上是关于我如何在 GitHub 中为其他人的代码做出贡献? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

使线性模糊对卡片做出反应

GitHub真把代码冰封北极1000年!

如何在 React Native 中为手机和平板电脑做出响应式设计?

没有在GitHub上显示为贡献者

祖传!你的GitHub代码已打包运往北极,传给1000年后人类

如何优雅的在GitHub贡献代码