如何使用Git和GitHub为开源软件做出贡献

bianmaren 发布于 2020-03-13 23:05:06    访问

标签 : Git

0_hv4ETHKODqYaZmIc (1).jpeg

什么是开源软件?什么是Git和GitHub?如何为开源软件做出贡献?如何提交拉取请求 Pull Request(PR)?

开源软件

什么是开源软件?

开源软件(英语:open source software,缩写:OSS)又称开放源代码软件,是一种源代码可以任意获取的计算机软件,这种软件的著作权持有人在软件协议的规定之下保留一部分权利并允许用户学习、修改以及以任何目的向任何人分发该软件。开源协议通常符合开放源代码的定义的要求。一些开源软件被发布到公有领域。开源软件常被公开和合作地开发。开源软件是开放源代码开发的最常见的例子,也经常与用户生成内容做比较[1]。 开源软件的英文“open-source software”一词出自自由软件的营销活动中[2]。

-维基百科。

      简而言之,开源软件是指带有源代码的软件,任何人都可以检查,修改和增强。它是可公开的可以访问的,任何人都可以根据自己的意愿查看,修改和分发代码。

从计算机的早期开始,程序员就是通过协作来开发软件的。例如,肯尼亚的一位程序员开发了一个新的应用程序,然后荷兰的另一位程序员研究了该应用程序,并发现了改进它的方法。知识是共享的,整个社区都将从集体增长中受益。

    但是,开源软件并不是完全免费的软件,公司可能仍会出售与开源软件相关的服务和产品。例如,他们可以提供具有附加功能的高级版软件。

    据统计:全世界所有的代码中有96%包含开源代码!

    开源是软件开发的基石,没有开源软件就无法想象过去,现在或将来。

为什么要贡献开源?

我一直都是pip install,npm install或者git clone别人的软件代码,却没有真正考虑过创建者或维护者。我从来没有真正考虑过如何为项目做出贡献以及由此带来收益。

你呢?

您是否想为什么无论是大公司还是小公司都为开源做出过巨大贡献?

您是否问过自己为什么大多数开发人员都积极地为开源做出贡献?

在2019年6月,Tidelift和The New Stack联合对专业软件开发人员进行了调查。据统计,大多数开发人员(84%)将自己视为开源项目的积极贡献者。


对GitHub上的公司进行了类似的分析:

1_yFuX0qtgq7u_yeKRqGfBbQ.png

从上图可以很清楚地看出,一些最成功和具影响力的技术公司都在致力于为开源做出积极贡献。

这是为什么呢??

它可以进一步发展您的职业

在为开源做出贡献时,您会得到认可,可以提高自己的编程技能,并成为活跃社区的一部分。这使您对潜在的雇主非常可见。在Linux基金会2016年的一份报告中,有86%的技术专业人员表示开放源代码帮助他们在事业上蒸蒸日上。

“在招聘开发人员时,我会在任何一天的履历中获取GitHub提交日志。”

-John Resig

可以获得竞争优势

这似乎有点违反直觉,因为任何人都可以使用开源代码。但是,组织表示,当开发人员为项目编写代码时,与仅使用该软件的人相比,他们会更好地了解该软件。一些公司可以通过使他们的底线受益的方式来利用这些专业知识。

可以降低开发成本和时间

当个人或组织将源于内部的应用程序开源时,他们可以访问更大范围的开发人员社区。他们不仅仅依靠团队成员,还从许多不同的人那里得到了贡献,这些人都对使软件变得更好感兴趣。

建立一个很棒的投资组合

许多公司正在寻求聘用具有与特定开源项目相关的技能的人才,并且除了实际为项目编写一些代码外,没有什么更好的方法来展示您的专业知识。

您对开源项目的贡献将清楚地显示您的技能,可靠性和动力。开源给您认可。

为什么认为在申请技术职位时会要求您提供GitHub帐户?

与您的导师,经验丰富的开发人员以及整个社区互动

从事开源项目的工作可能使您可以与世界上一些最好的创作者一起工作。您现在将拥有共同的兴趣,并且很可能会共同努力。

您如何为开源软件做出贡献?

  1. 创建您自己的开源项目,并将其托管在GitHub之类的公共场所。

  2. 创建商业软件的开源替代品。

  3. 为现有的开源项目做出贡献。这可以通过对软件,设计,文档,社区做出贡献或编写类似于您当前正在阅读的文章来完成。

这就是我们在本文中主要关注的内容。

什么是Git和GitHub?

您是否曾经与可能存储在Google云端硬盘等地方的其他人合作过某个项目或某个文档?您如何跟踪更改?您怎么知道谁更改了内容和时间?那版本呢?协作有多容易?这很可能使您陷入混乱。

以这种方式进行协作肯定是一场艰苦的努力。我不希望对我最大的敌人如此。

这就是Git的用武之地。要解决所有这些问题等等

0_lgObaY9rglFjch8N.jpeg

Git是一个分布式版本控制系统,用于在软件开发过程中跟踪源代码的更改。它是为协调程序员之间的工作而设计的,但可用于跟踪任何文件集中的更改。它的目标包括速度,数据完整性以及对分布式非线性工作流的支持。

-维基百科

简单来说,Git 是一个版本控制工具,用于跟踪文件或源代码中的更改,包括具体更改的内容,更改的对象和时间。Git允许一组人使用相同的文件一起工作。它可以帮助团队解决当多个人编辑同一文件时容易出现的混乱。


版本控制系统是可以帮助软件团队管理源 代码随时间变化的软件工具。版本控制软件在特殊的数据库中跟踪对代码的每次修改

到目前为止,Git是世界上使用最广泛的现代版本控制系统。它是一个成熟,积极维护的开源项目,最初由Linux操作系统的著名创建者Linus Torvalds于2005年开发。

另一方面, GitHub是一种在线服务,使用Git的开发人员可以连接到该服务,并可以上载或下载资源。Git的在线中心。


GitHub成立于2008年4月,就像一个“用于软件开发的Facebook”。这是一个非常不错的平台,任何人都可以检阅,贡献并参与开源社区。您将遇到自己喜欢的项目的创建者,开发人员,设计师,项目经理等,甚至可以与他们合作。


定期使用GitHub可以帮助您学习如何在开发团队环境中正常工作。


GitHub是一个Git托管仓库,为开发人员提供了工具,可通过命令行功能,问题(线程讨论),拉取请求,代码审查或在GitHub Marketplace中使用免费和购买的应用程序集合来发布更好的代码。GitHub拥有超过1500万开发人员的协作社区以及具有数百个集成的生态系统,因此GitHub改变了构建软件的方式。

-GitHub.com


入门:使用Git和GitHub为开源软件做贡献

先决条件:

  • 电脑安装了git

  • 有一个GitHub帐户

通过在终端或命令行上运行此命令来检查设备上安装的Git版本,以确认您已安装Git。(Windows / Mac / Linux)

git --version

1.寻找一个开源项目来贡献自己的力量。

尝试找到一个朋友的项目,甚至为了学习而尝试我的一个项目。只需转到他们的个人资料,然后导航到仓库。

一个仓库就像是为您的项目文件夹。项目的 资源库包含项目的所有文件,并存储每个文件的修订历史记录。…对于用户拥有的仓库,您可以授予其他协作者访问权限,以便他们可以在您的项目上进行协作。

一个仓库就像一个“fancy name”的 文件夹。

1_QDgchp2Pyr4W7d4PVsEszw.png


2.Fork一个仓库。

一个 fork 是一个仓库的副本。fork 仓库使您可以自由地进行更改试验,而不会影响原始项目。

1_lsyHKbGcKJ-hIugYzGS1zQ.jpeg

当您单击GitHub中的fork按钮时,您将复制整个仓库及其历史记录,直到该时间点为止。您可以将仓库(被分叉的仓库)的副本复制到自己的GitHub帐户中。

如何派生仓库:

  • 导航到您要使用的仓库并打开它。(就我而言,是来自oigara帐户的“Website”仓库)

  • 单击页面右上角的“ fork”按钮。

就我而言,我将fork Website仓库。只需单击“Fork”按钮,如下所示。

1_Fh1IJpn_w8oMXC_cvPQKlw.png

请注意,GitHub分叉后会自动导航到您的帐户

1_7j7wan-iIhfx4P2AWS_iCQ.png

就是这样fork之后,您将在GitHub帐户中拥有原始仓库的副本。

3.创建一个分支(branch)

一个分支是版本库的一个版本,从主要工作项目发散。本质上是几乎全新的独立开发线。

使用分支隔离开发工作,而不影响仓库中的其他分支。每个仓库都有一个默认分支,通常称为分支,并且可以具有多个其他分支。它代表了一条独立的发展线。您可以将它们视为请求全新工作目录的一种方式。 master

您甚至可以使用GitHub创建一个新分支。

1_CS-wZxCcNsWIWFudDK-psw.png

如何创建新分支:

在仓库的主页上,单击分支选择器菜单。

1_GZ9-2iFC-uZn8On4nR6MOw.png

输入分支的新名称,然后选择“ 创建分支”。

1_tencDTmggfvSVlExEco5SA.png

太棒了!请注意,分支数量增加了一个,并且分支选择器菜单现在显示您在新创建的分支上。您现在有了一个新分支。

您可以继续对其进行操作,而不会影响master / main分支。

4.克隆仓库。

克隆实用程序,用于定位现有仓库并创建目标仓库的副本或副本。

-Atlassian.com

1_WZ9JZmj-R_3tVOpVAzh1JQ.png

克隆仓库意味着您正在从特定源下载源代码的副本。

现在,您有了分叉的仓库的分支,但是计算机上该仓库中没有文件。

让我们在计算机上本地创建fork的克隆。

如何克隆仓库:

  • 在分支的仓库中单击绿色的“ 克隆”或“下载”按钮。这将启动一个名为“使用HTTPS克隆”的弹出窗口。

    1_Mu1meiBJWct3QCoRfKY9_g.png

  • 手动或单击上面显示的复制按钮,在弹出窗口中复制URL。

  • 在设备上的任何文件夹中打开终端或命令行。

  • 键入命令,git clone然后从弹出窗口复制URL。就我而言:git clone

  • https://github.com/paulonteri/Website.git

您应该看到与下面类似的输出。

1_dsO-LsBqwo5_pRYyL6ODPQ.png

使用lsMac / Linux和dirWindows设备上的命令,检查文件夹中的内容。我也使用tree可以单独安装的命令。

一种替代方法是使用默认文件管理器打开文件夹。

1_4knk7l-DQ92DqrR5fXbbeA.png

有了项目文件后,就可以自由编辑它们了。

您可以在所选的文本编辑器中打开文件并开始进行处理

1_yQhENoQToTG3N9XaBuWIAA.png

1_8Ook1RbDZKfOZWZV_w4wJA.png

现在您拥有了GitHub上的内容,这真是太棒了。

5.进行更改。

现在,您可以在此处对文件进行更改。

1_yQhENoQToTG3N9XaBuWIAA (1).png

1_dmvehkjCt2vJzHnx-S2eMQ.png

我更改了HTML网站的标题。

6.添加并提交更改

该git commit命令将所有分阶段的更改以及用户的简短描述保存在“提交”到本地仓库中。

-guide.freecodecamp.org

这git add是一个命令,它将工作目录中的更改添加到登台区域。在此命令的帮助下,您告诉Git您想在下一次提交中向特定文件添加更新。

-w3docs.com

该git commit命令将保存您所做的更改。

但是,您必须在运行命令之前明确告诉Git 您要在提交中包含哪些更改。这意味着文件不会因为更改而自动包含在提交中。相反,您需要使用命令将所需的更改标记为包括在内。git commitgit add

例如,这些是我采取的步骤:

  • 我使用终端导航到项目的文件夹(也可以使用CMD完成)

  • 我在本地拉出并创建了要提交的特定分支,该分支需要两个参数:local-branch-name:remote-branch-name(GitHub远程名称)应该相同。就我而言:然后,我移至要使用的特定分支。(默认分支为)git pull

git pull <local-branch-name>:<remote-branch-name>

git pull origin fix-title:fix-title

git checkoutmaster

git checkout fix-title

1_N9EdL07mMt5qpOBAHBf4DA.png

git pull和git checkout

  • 然后上演 /使用添加index.html文件git add。

git add Index.html

  • 然后,我使用git commit命令

提交了更改。我还添加了一个简短的描述/ 消息,该消息描述了使用该选项所做的更改-m(代表“消息”),并在消息中加上了引号" "。

git commit -m “Changed the website title”

1_cgZnccYYpZlH5eqSxP3kgw.png

git pull,git checkout,git add和git commit -m“您的消息/描述”

7.推送更改。

该git push命令用于将本地仓库内容上载到远程仓库。推送是将提交从本地仓库传输到远程仓库的方式。

-Atlassian.com

1_9dyuo7cEBf0WWaXOA95bkw.jpeg

注意: 

该git commit命令捕获并保存项目的当前更改。但是,提交不会自动传输到远程服务器(在本例中为GitHub)。使用该git commit命令仅将新的提交对象保存在本地Git仓库中。

您可以使用git push命令将本地仓库的内容上载到GitHub。

该git push命令带有两个参数:

一个远程名称,例如,origin默认的远程名始终是“出身”。

一个分支的名称,例如,master或者你所创建的分支。

git push <远程> <分支>

1_TVna-MhaXoC5eV_Lp9t4_Q.png

执行git push命令,如果到目前为止一切正常,将要求您输入用户名和密码,然后将更改推送到GitHub上指定的分支。

您的更改现在将在GitHub上可见。

1_QUHohl0kPoVyEv7v2CRNwg.png

使用您指定的消息的新提交。

1_kKFKtkt5IRWocsaiNZrgfg.png

可视化您的更改。

8.提出拉取请求。

拉取请求可让您告诉其他人已推送到GitHub信息库中分支的更改。

拉取请求是一项使与他人协作更容易的功能。它们提供了用户友好的Web界面,用于在集成之前讨论提议的更改。

打开拉取请求后,您可以在将更改合并到正式仓库之前与协作者讨论和审查潜在更改。

如何提交拉取请求:

  • 在您处理过的仓库分支上,单击“ 新建拉取请求”按钮。这将在分支选择器按钮附近的左侧某处。

点击后,您将进入一个新屏幕。

1_3d33YpaJCX0Y5aCCCMcjfQ.png

单击新建请求请求按钮。

  • 在接下来的屏幕上,使用基地分支下拉菜单选择分支您想更改合并到,然后用比较分支下拉菜单选择您在做出更改的话题分公司。在我的案例,我要合并的基础仓库是oigara / website,基础分支是master。

  • 为您所做的更改提供一个简短,简洁的标题和 说明,也很不错。

  • 要创建准备好进行审核的请求请求,请点击创建请求请求。要创建草稿提取请求,请使用下拉菜单并选择创建草稿提取请求,然后点击草稿提取请求。

1_5X2NLELo-e2xxLUEZGN_vw.png

  • 您已创建拉取请求。

资源库的维护者将审查您的贡献。从那里,如果情况良好,他们可以将其合并,或者他们可能会要求您进行一些更改。

1_hnh_bASJ8JoPDycTPqwBsA.png

做完了 请等待反馈。