大部分互联网从业者都接触过不少开源项目,特别是工程师简直离不开开源社区。那么咱们怎么积极参加开源社区,为开源项目做奉献呢?期望您读完本文能有所收获,一起参加开源项目。

什么是开源?

开源是指在许可证的许可下向公众提供能够查看、运用、修正和分发的源代码。
无论是个人、公司、小型企业、非营利组织还是政府机构,开源代码一般契合企业或个人的最大利益。

提交代码流程

提交代码的流程一般如下:

  1. 派生一个项目
  2. 从 master 分支创立一个新分支
  3. 提交一些修正来改善项目
  4. 将这个分支推送到 GitHub
  5. 创立一个拉取恳求
  6. 评论,依据实际情况持续修正
  7. 项目的具有者兼并或封闭你的拉取恳求
  8. 将更新后的 master 分支同步到你的派生中

示例

下面经过一个场景来实操怎么给开源项目提交代码。

Tony 在找一些能在他的 Arduino 微控制器上运转的代码,他觉得github.com/schacon/bli… 中的代码不错。

如何给开源项目做贡献

但是有个问题,这个代码中的的闪耀频率太高,咱们觉得 3 秒一次比 1 秒一次更好一些。 所以让咱们来改善这个程序,并将修正后的代码提交给这个项目。

他想给项目奉献代码

首要,单击“Fork”按钮来取得这个项目的副本。 咱们运用的用户名是“tonychacon”,所以这个项目副本的访问地址是: github.com/tonychacon/… 。 咱们将它克隆到本地,创立一个分支,修正代码,最终再将改动推送到 GitHub。

# 将派生出的副本克隆到本地
$ git clone https://github.com/tonychacon/blink
Cloning into 'blink'...
$ cd blink
# 创立出名称有意义的分支
$ git checkout -b slow-blink
Switched to a new branch 'slow-blink'
# 修正代码
$ sed -i '' 's/1000/3000/' blink.ino
# If you're on a Linux system, do this instead:
# $ sed -i 's/1000/3000/' blink.ino (3)
# 查看改动
$ git diff --word-diff
diff --git a/blink.ino b/blink.ino
index 15b9911..a6cc5a5 100644
--- a/blink.ino
+++ b/blink.ino
@@ -18,7 +18,7 @@ void setup() {
// the loop routine runs over and over again forever:
void loop() {
  digitalWrite(led, HIGH);   // turn the LED on (HIGH is the voltage level)
  [-delay(1000);-]{+delay(3000);+}               // wait for a second
  digitalWrite(led, LOW);    // turn the LED off by making the voltage LOW
  [-delay(1000);-]{+delay(3000);+}               // wait for a second
}
# 将改动提交到分支中
$ git commit -a -m 'three seconds is better'
[slow-blink 5ca509d] three seconds is better
 1 file changed, 2 insertions(+), 2 deletions(-)
# 将新分支推送到Github的副本中
$ git push origin slow-blink
Username for 'https://github.com': tonychacon
Password for 'https://tonychacon@github.com':
Counting objects: 5, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 340 bytes | 0 bytes/s, done.
Total 3 (delta 1), reused 0 (delta 0)
To https://github.com/tonychacon/blink
 * [new branch]      slow-blink -> slow-blink

给源项目创立拉取恳求

现在到 GitHub 上查看之前的项目副本,能够看到 GitHub 提示咱们有新的分支, 而且显示了一个大大的绿色按钮让咱们能够查看咱们的改动,并给源项目创立拉取恳求。

如何给开源项目做贡献

很快,维护者会将你的一切更改兼并到该项目的主分支中(除非他们需求你的更改)。 兼并更改后,你将收到一封告诉电子邮件。

让你的 GitHub 公共库房保持更新

当你派生了一个 GitHub 库房之后,你的库房(即你的“派生”)会独立于原库房而独立。 特别地,当原库房有新的提交时,GitHub 会告诉你:

This branch is 5 commits behind progit:master.
(本分支落后 progit:master 5 个提交。)

但你的 GitHub 库房不会被 GitHub 主动更新,这件事必须由你自己来做。还好,这事儿很简略。

第一种方法无需配置。例如,若你从 github.com/progit/prog… 派生了项目, 你能够像这样更新你的 master 分支:

# 如果在另一个分支上,就切换到 master
$ git checkout master
# 从 https://github.com/progit/progit2.git 抓取更改后兼并到 master
$ git pull https://github.com/progit/progit2.git
# 将 master 分支推送到 origin
$ git push origin master

这尽管可行,但每次都要输入从哪个 URL 抓取有点麻烦。你能够略微设置一下来主动完成它:

# 增加源库房并取一个姓名,这里叫它 progit
$ git remote add progit https://github.com/progit/progit2.git
# 将 master 分支设置为从 progit 远端抓取
$ git branch --set-upstream-to=progit/master master
# 将默许推送库房设置为 origin
$ git config --local remote.pushDefault origin

搞定之后,作业流程为更加简略:

# 如果在另一个分支上,就切换到 master
$ git checkout master
# 从 progit 抓取更改后兼并到 master
$ git pull
# 将 master 分支推送到 origin
$ git push

如果采用这种方式,建议不永久不要直接在master分支进行代码提交,由于当时配置的分支实际上属于上游库房,在用户在其它分支开发和提交代码。

参考文档:
GitHub-对项目做奉献