我如何在 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 克隆到您的机器上 创建一个分支并进行必要的更改 将您的更改推送到 GitHubgit 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 <branch>
在你的命令行中,你应该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 中为其他人的代码做出贡献? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章
如何在 React Native 中为手机和平板电脑做出响应式设计?