开源StepFirst

467 阅读7分钟

本文已参与「开源摘星计划」,欢迎正在阅读的你加入。活动链接:WeOpen-Star


本文以 Gitee 平台为例,实现如何参与一个简单的项目贡献。
大概的实现流程为:
①将官方仓库复制(fork)到自己的账户上;
②将仓库中的内容拉取(clone)到本地,进行修改;
③修改完,将本地修改后的内容推送到自己的远程仓库;
④向官方仓库拉取请求(Pull Request)请求将自己修改的内容合并到官方仓库。

一、准备工作

账号注册

若没有相关账号,可前往官网注册:
Githubgithub.com/
GitHub是目前全世界最大的开源代码托管平台,旨在促进在一个共同项目上工作的个人之间的代码托管、版本控制和协作。通过该平台,无论何时何地,都可以对项目进行操作(托管和审查代码,管理项目和与世界各地的其他开发者共同开发软件),GitHub 平台为开源项目和私人项目都提供了项目处理功能。 Github.png

Giteegitee.com/
Gitee是开源中国(OSChina)推出的基于Git的代码托管服务,中文名为“码云”。
GitHub仓库可以快速导入Gitee及同步更新 参考链接 Gitee.png

Git下载

Git是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。
我们需要在本地电脑上安装Git工具 下载链接,下载后点击安装即可。 gitdownloads.png

Git配置用户信息

安装成功后可在桌面或文件管理器中右键单击 Git Bash Here 运行Git Bash工具。 gitbashhere.png

配置自己Git用户的用户名和邮箱,这些将会做为后续Git提交的一些个人信息:

git config --global user.name "此处填写你的用户名"
git config --global user.email 此处填写你的邮箱

Git 提供了一个叫做 git config 的工具,专门用来配置或读取相应的工作环境变量。
这里用了 --global 选项,那么以后所有的项目都会默认使用这里配置的用户信息。
如果要在某个特定的项目中使用其他用户名或者邮箱,只要去掉 --global 选项重新配置即可。

二、fork仓库到自己的账号上

因为我们没有权限修改官方仓库,所以我们需要进行fork操作,会将官方仓库上的所有内容都复制一份到我们自己的账号下作为我们自己的仓库,这样我们就可以对自己的仓库进行修改。
进入官方仓库后,点击右上角的 Fork 按钮,fork后状态变为 Forkedfork.png check.png

这样我们就可以对仓库中的内容进行修改了。

三、使用Git工具克隆仓库到本地

进入仓库页面,点击 克隆/下载 ,方法有很多种,这里我们复制 HTTPS 下载链接 clonenew.png

在本地目标位置(文件夹)中右键单击 Git Bash Here 运行Git Bash工具,输入如下命令:

git clone 之前复制的https下载链接

clonedown.png clonedown02.png

其中.git文件夹是隐藏文件夹,我这里进行了设置,所以能看到。
这样将仓库下载到本地,方便后续操作。

在大多数情况下,一个仓库会有多个分支,我们可以在下图位置查看分支名称列表: branch.png

如果想拉取指定分支到本地,我们可以使用如下命令:

git clone -b 分支名 仓库地址

这样我们clone下来的就是指定分支的内容。

四、提交修改的内容并推送到远程仓库

对本地仓库的内容进行修改后,我们可以通过如下命令查看仓库当前状态:

git status

modified.png

可以看到修改的文件是 README.md
接下来使用git add -a命令暂存所有的修改:

git add -A       //或者git add -a

gitadd.png

使用git commit命令提交我们所暂存的修改,使用-m参数后面可以带上本次提交的文本信息:

git commit -m "本次提交的文本信息"

gitcommit.png

使用git push命令将本次提交推送到远程仓库,origin是远程仓库的别名:

git push origin 远程仓库分支名称        //分支名称比如:master

在首次推送的时候,可能会验证我们的账户信息。
验证完毕后,推送成功! gitpush.png pushsuccess02.png

仓库页面可以看到推送信息: checkpush.png

点击推送,可以查看本次推送的具体信息(主要是修改内容的差异): pushdetail.png

五、请求官方仓库拉取我们所做的修改

我们要进行 Pull Request拉取请求操作,向官方仓库提出 pr ,如果官方同意拉取,那么所做的修改就会成功地贡献到官方仓库里。

首先点击 Pull Request 栏目,右上角 +新建Pull Request pr01.png

下图我们可以看到,当前是由
fork的仓库 maplejam/adream-good 向官方仓库 AdreamOrg/adream-good 贡献内容.
平台会自动检查当前的修改是否会产生冲突,若没有冲突,则会显示“可自动合并”。 pr02.png pr03.png

右侧可以设置优先级、标签、关联等信息,审查、测试人员都是官方指派的。
填写好标题和说明以及检查无误后,可以创建或保存 Pull Request
创建后就能在官方仓库下看到我们创建的 Pull Request 了: pr04.png 官方会审查和测试我们的pr,如果没有问题,那么就会合并到官方仓库,完成一次贡献!

补充(如何删除本地仓库)

我在一开始clone的仓库是官方仓库,应该先fork一份到自己的仓库中,所以拉取错了,那么就要删除本地已存在的仓库。
简而言之,就是通过各种手段删除仓库文件夹下隐藏的.git文件夹
进入想要删除的仓库根目录,右键单击 Git Bash Here 运行Git Bash工具
查看可见和隐藏文件夹:

ls -a

ls-a.png

我们可以看到名为 .git 的文件夹,我们使用以下命令删除该文件夹:

rm -rf .git

标志 -f 用于在没有提示的情况下强行删除不存在的文件和参数(小心使用)。
标志 -r 用于递归删除每个目录及其内容。
同理可得,可以将仓库目录下的所有文件都成功删除。

但是发现根目录却删除不了?! cannotremove.png

搜寻原因,可能是因为一些程序逻辑不完善,常规的关闭并没有彻底的杀死进程。
这时得打开资源管理器中性能栏目下的资源监视器: taskmanager.png

在 cpu 页签里的关联句柄处搜索被占用的文件夹路径。然后就能查到占用该文件夹相关的进程,右键结束即可。 resourcemonitor.png

所有相关进程都结束后,就可以成功删除仓库根目录了。 deleteall.png

总结

本文比较简单地描述了如何进行一个简单的开源贡献。但对于我来说,在整个流程实现中有着很大的收获,我掌握了一些Git命令,也了解了issueprWiki统计等模块的具体含义,更是对这种高效的项目管理方法感到震惊,不禁感叹人类的智慧哈哈。
正如开源摘星计划✨所描述的:对于我们来说,参与贡献不仅仅是 Coding ,也可以是从分享第一份学习笔记开始,学习开源项目的架构和实现原理;当对项目有初步了解,可以开始完成一些简单的社区任务,例如文档纠错、文档翻译、提交Bug等;在足够了解项目及贡献方式后,可以开始尝试参与开源项目功能开发、测试、 bug 修复等 Coding 任务。这是一个循序渐进的过程,我们要了解自己的能力,乐于做一些力所能及的事儿;同时也不能忘记学习知识,提升自己的能力也能提升自己的贡献,同时不会被日新月异的时代所抛弃。

迈向开源的一小步,可能是未来人生的一大步。