GitHub入门:各种概念、图解页面信息(都是知识点啊小伙伴们)
一、Git是什么?
Git是一个版本控制系统。
版本控制系统,是设计用于跟踪文件随时间变化的状态的一款软件。
Git是一个分布式的版本控制系统。
在Git中参与项目的每个程序员不仅能够拥有文件的当前状态,还能拥有项目完整的历史记录。
二、GitHub是什么?
GitHub是一个网站,可以像该网站上传一个Git数据库副本。使用GitHub可以使你与他人合作一个项目变的更加容易。
GitHub提供了如下机制:
1. 共享库的位置
2. 分叉(forking:A复制一个B的项目到自己的账户下,修改后再提交,B能看到A修改的内容,但是B原本的项目是不会有变动的)
3. 拉取请求(pull request)
4. 提出问题(issue)
5. 维基百科搜索(WiKi)
这些功能使得团队开发能更有效地对所做的修改进行说明,讨论与评估。
三、为什么要使用Git?
个人开发:
1. 可以回滚
2. 可以查看项目所有的修改记录,历史版本
3. 对改动原因进行记录
4. 老大再也不怕我xjbg出问题了,可以回滚
5. 不同的分支可以记录不同的状态
团队开发:
1. 多人合作对同一个项目进行更改时,git能够自动合并冲突的地方,如果自动合并失败,会提示冲突的位置,方便修改。
2. 历史记录的独立分支,多人合作时,可以每个人做自己负责的模块,最后合并一下就可以了。
四、为什么要使用GitHub?
1. GitHub可以用来存储Git仓库,而且还有一些实用的功能。
2. 文档需求:提出问题(issues)可以记录缺陷或指定新的功能,然后团队再一起开发(就是产品经理提需求了,整个在一个Group的人都能看到)。
3. 分支:(分支branches)和拉请求(pull requests),可以在不同的分支下进行合作。
4. 可以在拉取请求的历史中,观察到是谁改动了项目,对改动的变化提出评论或意见。
5. 可以通过pulse,看到团队的工作进展。
五、关键概念(主要有助于装x)
1. 提交(commit):提交更改到仓库(本地Git仓库与GitHub仓库是两码事)。
2. 提交信息(commit message):每次提交的时候,需要提供一个信息,描述这次提交都做了什么。
3. 分支(branch):像树状图一样,每个独立的分支都是项目的一个版本,分支都可以与master合并。
4. 主分支(master branch):所有的Git项目在最初创建时,都会默认创建出一个分支,这就是主分支。在开发中,写一个新功能的时候,都是先建立一个分支,在该分支上完成功能并测试,通过后由项目leader将该分支merge到master上。
5. 功能分支(feature branch):没怎么用过
6. 发布分支(release branch):如果有一个手动QA(质量管理)流程,或者必须要支持旧版本的软件时,需要一个发布分支来存放必要的补丁与更新记录。功能分支和发布分支没技术区别,只是在团队间讨论的时候,有助于区分类别。
7. 合并(merge):merge可以将一个分支上的全部内容归并到另一个分支上,一般就是将分支merge到主分支。
8. 标签(tag):常用于记录发布版本,在版本发布的时候,给一个tag,这样就能够记录该版本的代码是何时生成的。
9. 查看(check out):一般就是查看某一个分支上操作的记录。
10. 拉取(pull request):一般用来从远程仓库拉取分支中的代码到本地,也可以从本地仓库中拉取分支代码到当前工程中。
11. 提出问题(issue):GitHub的提出问题的功能,一般遇到问题,可以将出现问题的场合,通过issue的方式记录。
12. 维基(WIKI):一个轻量级的Web页面创建方式,创建的Web页面之间可以通过链接互相练习。GitHub中的项目通常使用WIKi进行文档记录。
13. 克隆(clone):从GitHub上下载一个副本到本地,操作后可以pull上去。
14. 分叉(fork):A复制一个B的项目到自己的账户下,修改后再提交,B能看到A修改的内容,但是B原本的项目是不会有变动的。
六、项目主页大体介绍
七、查看README.md文件
一般在项目的根目录中,会有一个叫README.md的文件,一般在项目目录下方第一栏目就是了。
该文件介绍了如何使用当前项目,很简单很esay很容易理解~
八、查看提交历史
点击已提交次数的那个commits,可以查看提交的历史信息。
关于SHA值:在Git中,根据commit的sha1值40个十六进制数字进行了简单的划分目录,以前2位数字作为目录名,其下面是剩余38位数字组成的一个文件名。
每个commit id的信息(如6c3a1607b06cf129c017aa28e6aa3baee1a66745)就是一个SHA值,如果想查看自己分支中的coomit id执行git log即可。也可以根据两个commit id,对比两次提交的修改情况。
查看档次提交的信息。
九、查看拉取请求
可以看到当前正在进行的工作,bug修复或者是添加新功能。
十、查看问题
查看当前项目中存在的问题,一般就是用OKHttp用不明白了,或者项目出错了,咱们这帮菜鸡就可以在这里像大神们问一问。
十一、查看pulse(项目的最近情况)
十二、查看各种图表
Contributors(贡献者图表)
就是谁干活了,一个大表显示所有干活的人。
之后的小图,显示每一个干活的人都干了多少,在什么时间段干的,按照干活多少排列。
默认情况下该表显示的是项目整个周期内的数据,如果想按时间段查看的话,可以直接在大表中点击想查看的时间点,然后拖动一下,选中一个时间范围,下面的表就会随之匹配数据。
Commits(提交图表)
Code frequency(码频表)
码频表中显示了在某个时间段内,该项目中代码添加和删除的行数,一般用这个表来观察该项目是否有大变化。
Punch card(打卡表)
故名思议,就是干活了就打个卡,根据每天提交的数量多少显示大圈小圈
Network(网络图)
显示了分支数量以及整个项目历史分支上的提交数量,还显示贡献者创建的分叉数量。
注意分支指的是branch,分叉值的是fork
Member(成员列表)
成员列表仅显示已对存储库分叉的人以及分叉的分叉。这些人不是原来父库的合作者,隐藏需要存储库的本地副本以便于通过拉取请求对其作出贡献。
Dependents(依赖)
这个没看到哪个项目有数据,猜测是依赖了当前项目的工程会显示在这里,但是暂未发现有数据的项目。