用 Git 和 GitHub 进行开源合作

原文:Open-Source Collaboration Using Git and GitHub
作者:Kelvin Lau
译者:kmyhy

注:本教程假设你

  1. 拥有 GitHub 账号。如果不,请从这里注册一个新账号。
  2. 你的系统中已安装有 Git。你可以用 which git 终端命令查看是否已安装 git。如果看到有 /usr/bin/git 之类的输出,你就可以继续往下做。如果不,请安装 Xcode 或者从 Git 网站的这个地址下载安装包;

当遇到一个 GitHub 项目时,你想要为其做出贡献。太棒了!这似乎很容易。但是,对于第一批在全球性的开源项目上工作人来说,这任务却令人生畏。

在本教程中,你将学习开放源代码贡献的整个流程,从检出代码,创建问题,push 你的新贡献的。当你在学习本教程的示例项目时,你会忍不住开怀大笑。

开始

开源开发是软件开发行业的重要组成部分.你每天使用的许多工具和库都是由全球数百万人塑造的。iOS开发人员每天使用的CocoaPods和Carthage等依赖管理器都是由公共贡献驱动的。甚至SWIFT语言本身也是开源的。

为开放源码项目做出贡献的理由有许多:

  • 这是构建一个高度可访问的履历的好方法。你的 GitHub 档案可以成为你的专业知识的宝库。
  • 开源的贡献依赖于其他开发人员之间的协作。你参与的对项目的讨论以及贡献是你作为一个团队合作者的优秀表现。
  • 现在和以后的雇主,以及你行业中的同行,将会关注你在社区的工作。
  • 这是一个学习和扩展你的开发技能的好方法!

这是一个学习和扩展你的开发技能的好方法!通过选择你想要贡献的项目,为开源做出贡献。查找和你的兴趣相关的项目的一种方法,就是去查看 GitHub 中的主题。以下是 SWIFT 主题列表:

查看热门类别也是寻找热门项目的好方法。

如果你想确切地要对哪个 repo 做出贡献,你也可以直接访问项目页面。去年,RayWenderlich 在 RWDevCon 上留下了许多程序员老爸的笑话(dad joke,意即不好笑的笑话),让观众喘不过气来。

为了给编程行业带来更多的幽默,你将为我们的第一个开源笑话库贡献你自己的程序员老爸笑话。

在这个 URL 地址 https://github.com/raywenderlich/DadJokes,你会看到本教程的 git 项目。

你会看到这个页面:

将这个页面收藏起来,以便你经常性访问。

术语

在开始讲笑话之前,你需要了解开源项目中的一些常用术语。

Repo

repositiy (存储库)的简称,一个 repo 就是一个 GitHub 项目。DadJokes 就是一个 repo。在学习开源开发时,你会经常使用和听到这个词。

维护者

“维护者”(Maintainers)是指拥有对 repo 进行更改的权限的用户。repo 的所有者有权授予用户不同级别的权限。设置这些访问级别对于防止恶意用户修改代码(即“笑话”)是很重要的——-或者在这种情况下,削弱双关语。

README

README 文件通常指的是总结项目内容的Markdown文件。

提出问题

在开源过程中,第一步最好从查看问题开始。问题(issue)是在社区中创建讨论的一种方式,无论是提出问题、提供反馈,还是联系维护者。

在 DadJokes repo 首页,点击 Issues 标签链接:

此选项卡包含社区成员提出的问题列表。你将从这里开始创建问题。

点击绿色的 New Issue 按钮,你会看到:

如果该 repo 提供了贡献指南,那么你会看到一个警告对话框。因为你是一个四好青年,那么请点击突显的“contribution”一词并查看贡献规则。

在被贡献指南幽默了一把之后,回到问题创建页面。首要的任务是创建一个标题。将标题设为 Joke。

然后是问题正文。你会看到一些预先填充的文本。如果维护者向其存储库中添加了SeaSeriTimePo.MD文件,GiTHUB会将该文件的内容作为每个新问题的模板来呈现。

针对我们的这个问题,请在正文中写上:

Issue created in response to #1

### Question
What did the Swift String hash function say to the others?

### Answer
I Sip Hash Are You?

所有的问题都有一个编号。这个编号在这个 repo 中是唯一的,允许你在各种讨论中“深度链接”这个问题。对于我们的问题来说,你可以在正文中引用问题 #1。点击 Preview 按钮查看该问题:

点击 Submit new issue,创建你的第一个问题。

注:我不擅长说老爸笑话。SipHash 是用于 SWIFT 字符串的哈希散列算法。你可以在这里查看源代码。

下载 repo

提完一个问题之后,你可能会等待反馈以决定接下来怎么做。当等待的过程中,你会深入研究该问题。首先,需要将项目代码下载到本地。

Forking

在下载别人的 repo 之前,需要创建一个分支,它是别人项目的个人副本。分支是原始 repo 和个人副本之间的桥梁。

在 repo 的右上角有一个 Fork 按钮,点击它创建一个分支。

注:如果你属于多个组织,则会提示你选择分支应要方在哪里。选择你的个人账户。

稍后,GitHub 会完成对 repo 的分支操作。你会发现显示的页面很熟悉:

这是原回 repo 的你自己的副本。你可以自由地对此副本进行任何更改,并且不会影响原始副本。既然你有了分支,就可以把它克隆到你的电脑上了。

克隆

在你的 repo 分支页面,点击 Clone or download 按钮,会弹出一个对话框:

确保你使用的是 cloning with HTTPS,并复制链接。接下来,打开终端并执行以下操作:

cd ~/Desktop
git clone <将你复制的连接放到这里>

这会将 repo 克隆到桌面上。

查看项目

克隆完 repo 后,你会在桌面上看到一个名为 DadJ 的新文件夹。导航到项目文件夹并在 Xcode 中打开 DadJokes.xcodeproj。在iPhone模拟器上 Build & run 该应用程序,你将看到以下内容:

根据你阅读本文的时间,其他贡献者可能会添加一些新的笑话。越多越好,我说!

添加贡献

再次打开终端。执行命令:

cd ~/Desktop/DadJokes
git checkout -b feature/my-new-joke

这将为 repo 创建一个新分支并切换到新分支,用于后面的修改。接下来,打开JokeStore.Swive并找到以下代码:

private var storage: [Joke] = [
  // ...
]

storage 是一组硬编码的 Joke 结构数组。前面的表视图控制器中会列出了这个数组中包含的所有笑话。要对这个项目做出贡献,你只需要在这个数组中添加一个笑话(或一些笑话)。

在 storage 最前面加一个新的笑话:

private var storage: [Joke] = [
  // 添加新笑话(内容随意)
  Joke(description: "You should be careful with functions that return a value...", 
    punchline: "In fact, I would just a void them."),

  // ... other jokes
]

Build & run。你会在 table view 一开头看到这个笑话:

推送到远程

所谓远程(remote),指的是GitHub上存储库的位置。现在你已经在你的个人复制项目中做了一些更改,是时候将这些更改推送到远程了。在终端中键入以下内容:

git add .
git commit -m "Added new joke"
git push --set-upstream origin feature/my-new-joke

最后一句将新分支的 upstream 设置为 origin 分支(将本地分支和远程分支进行关联)。
你可能要输入 GitHub 账号和密码。当登录成功后,你的更改将被推回到 GitHub。你的个人副本现在添加了新的笑话,但原始 repo 无法看到这些变化。要使它们可见,你必须提交一个 pull request。

Pull Requests

一个 pull request 是一种要求对某个 github repo 进行修改的提案。社区可以查看这个 pull request 并讨论这种更改和任何潜在修改。

回到原来的 DadJoke repo 页面,点击 New pull request:

这将进入 Create new pull request 页面:

你的新笑话是在你的个人 repo 分支中,所以你需要点击 compare across forks。这会显示另一个样子:

左边的选项表示基本分叉和分支。因为你希望为原始 repo 和主分支创建一个 pull request ,所以你将不修改这两个选项。需要修改的是右侧的两个选项。修改它们以匹配你的副本和新分支。下面是一个示例,可能是这个样子:

有了这个,你就会看到一个类似于新建问题的页面:

这是向社区发布你的提案之前的最后一步。页面的底部显示你对此 pull request 建议的更改的摘要。

将 pull request 的标题更改为“<您的名字>的 Joke”(将你自己的名字替换到尖括号中),并在正文中添加以下内容:

This addresses issue #1. Adds a dad joke.

#1 创建了一个对和编号对应的问题或 pull request 的引用。在里,#1 就是指要求更多笑话的那个问题。当你创建一个 pr 后,要尽量简洁并多引用相关讨论。这会给你的 PR 提供更多的上下文,使维护人员更容易查看和提供反馈。

点击 Create pull request,将它发布到社区。

对 PR 进行审查

GitHub 有一个很好的工具来简化审查过程。可以通过单击特定 PR 的FilesChanged 选项卡来访问该工具:

“Files changed”选项卡会列出某个 PR 的所有更改。新增的行显示为绿色,删除的行显示为红色。

将鼠标停在你添加的那个笑话的绿线上。你会看到这一行的左边有一个蓝色的“+”按钮。点击它:

当评审时,你会检查每一个修改,必要的时候可以添加点评论。在 text view 中写入”哈哈,笑死我了!”,然后单击 Start a review。以这种方式创建的评论会在你提交评论时批量处理,所以对于大的 PR ,偶尔中断去休息一下也没关系。

因为这个 PR 很小,所以你肯定对唯一的一条评论是满意的。点击 Finish 完成评审,并写下一个总结:

通常,你不会评审自己的的贡献,但因为出于本教程的目的,你就这样做了。浏览其它 PR 并用相同的流程来给出你的意见!

接下来做什么?

希望你喜欢这篇关于开源贡献的教程。另外还有很多项目,现在你已经具备了为它们做出贡献的能力。如果你感兴趣的话,还有另外一些教程:

  • SWIFT算法俱乐部是GitHub上最受欢迎的 SWIFT 存储库之一。请看这篇介绍,了解更多关于参与贡献的信息。
  • 视频课程git 入门是学习更多关于git版本控制的好方法。如果你想成为一个开源的贡献者,对git有一个全面的了解,这是非常有用的。

如果你有任何问题或意见,请加入下面的讨论!

猜你喜欢

转载自blog.csdn.net/kmyhy/article/details/80405328
今日推荐