前言
刚到公司实习,参与大项目的开发,需要用到代码管理平台,于是打算先学习大家最常用的 Github 的使用指南,在网上看到这篇文章不错,原文链接,另外参考官方指南。这里做一下学习笔记。
Github 和 Git 的区别:
- Github 可以理解为代码管理平台,就是我们把代码上传到这个平台上面去,大家可以查看、下载,如果有权限还可以修改。所以对于团队协作开发很有帮助;
- Git 可以理解为代码管理工具,它和代码管理平台相互配合(代码管理平台不止 Github 一个,还有码云,以及腾讯内部使用的工蜂等等),通过一些指令可以对代码管理平台上的代码进行一系列的操作,如 clone 克隆、pull 拉取、push 推送等等
获取资源
- 我们可以在左上角进行资源的搜索,这里以开源框架 OkHttp 举例,可以选择在自己的仓库搜索还是在整个 Github 网站上搜索。这里默认在整个网站搜索
- 搜索结果如下:
- 点击第一个进入后即可看到整个项目结构及源码。通过这个绿色的按钮,再点击 Download ZIP 可以对资源进行下载
上红框是仓库地址,可以通过 git 工具进行克隆。如果选择 Download ZIP,就是下载资源的压缩包
创建仓库
- 在自己的主页中点击 Repositories 右边的绿色的 new 按钮可以创建自己的代码仓库
- 输入仓库名和仓库的描述或说明,然后点击 Create repository 进行创建
- 这样仓库就创建完成了,只不过现在的仓库是空的,还什么也没有,所以这里它推荐你从其它地方导入代码进来或者推送代码进来。我们可以点击 creating a new file 来创建新文件
- 填上文件名,然后随意编写一些文件内容
- 完成后将网页拉至底部,填写这次创建文件的说明,然后点 Commit new file
- 现在你自己的仓库里就有内容了
团队协作开发
Github 的优势就是让广大人民群众都可以参与到各种开源项目的编写
那么,如何在 Github 上实现团队协作呢? 通过前面的一些操作,我们已经创建了一个仓库,那么我们就以这个仓库为例,进行团队开发。首先你得在这个仓库中加入你的团队成员
1 添加团队成员
- 点击
Settings,再点击左侧的Collaborators,进入协作组页面。然后通过下面的搜索框查找用户,输入用户的用户名或者邮箱地址进行搜索,成功搜索到之后点击Add collaborator即可将该用户添加为这个仓库的协作者。这个时候该用户会收到一条通知,只有他同意了才会参与到这个仓库的开发中来
- 我们还可以对团队中的成员进行权限的设置,以便更加高效地开发
2. 创建新分支
- 点击 master 打开下拉框
- 输入新分支的名称
- 点击 Create branch 即可创建 master 的分支 new branch
该新分支的内容与 master 主干的内容是一模一样的
3. 进行更改和提交
- 修改 new branch 分支的 README.md 文件后,会提示 new-branch had recent pushes,这是该分支的推送提示
- 点击
Contribute合并分支,再点击Open pull request
- 点击
Create pull request进行合并
- 等待系统检测冲突:
- 没有发生冲突,pull request 已完成
4. 比较和拉取请求
如果 new branch 分支新增了文件,提交申请后点击 Confirm merge 确认 merge(合并)
这里可以看到 master 主干成功被修改(多了新文件 test2)
参与开源项目
如何去参与一个开源项目,比如人气极高的 bootstrap,这是一个非常强大的 CSS 框架,我们在整个网站中搜索bootstrap,然后进入仓库主页。然后点 Fork,就会在自己的账号下克隆一个 bootstrap 仓库。
然后从自己的账号下克隆,这里就必须要使用 git 工具了,输入 git 指令:
git clone https://github.com/blizzawang/bootstrap.git
注意一定要从自己的账号下 clone 仓库,这样你才能推送修改,如果从 bootstrap 作者的仓库地址克隆,因为没有权限,你将不能推送修改,除非作者将你列为该仓库的协作者,但显然这是不可能的。
Bootstrap 的官方仓库 twbs/bootstrap、你在 GitHub 上克隆的仓库 my/bootstrap,以及你自己克隆到本地电脑的仓库,他们的关系就像下图显示的那样:
如果你想修复 bootstrap 项目的一个 bug,或者新增一个功能,立刻就可以开始干活,干完后,往自己的仓库 push 推送。
如果你希望 bootstrap 的官方库能接受你的修改,你就可以在 GitHub 上发起一个 pull request。当然,对方是否接受你的 pull request 就不一定了