GitHub入门与实践总结
自己的博客 http://blog.csdn.net/qq_22329521
什么是GitHub
==
github是开发者提供Git仓库的拓宽平台,让开发者与朋友,同事同学及陌生人共享代码的一个平台
GitHub除了提供Git仓库的托管服务外,还为开发者或团队提供了一系列功能,帮助其高效率,高品质地进行代码的编写
GitHub提供的主要功能
- Git仓库:
一般情况下我们可以免费创建任意个GitHub提供的Git仓库。但如果需要建立只对特定人物或者自己公开的私有仓库,则需要付钱 - Organization:
个人在使用个人账户就足够了,但如果是公司,建议使用Origaniztion账户,它的优点在于可以统一管理账户和权限,还能统一支付一些费用。如果只是公开仓库,是交流群或者小团体开发软件,可以免费创建Organiztion账户。 -
Issue:
Issue功能,是将一个任务或者问题分配给一个Issues进行追踪和管理的功能。每一个功能更改或者修正都对应一个Issue,讨论或修正都已这个Issue为中心进行。只要查看Issus,就知道这个更改相关的一切信息,以此进行管理。在Git上提交信息写上Issus的ID(例如 “#7"),GitHub就会自动生成从Issue到对应提交的链接。另外,只要按照特定的格式描述提交信息,还可以关闭Issue。 - WiKi:
Wiki作为Git仓库进行管理。改版的历史记录都会被保存下来。 -
Pull Request:
开发者向GitHub的仓库推送更改或功能添加,可以通过Pull Request向别人仓库提出申请,请求对方合并。
PullRequest 送出去后,目标仓库的管理者等人将能够查看Pull Request的内容及其包含的代码更改
同时,GitHub还提供了对Pull Request和源代码进行讨论的功能。提供此功能可以对行为单位对源代码进行评论,让程序员高效的交流
Git
git的基本操作
- git init--初始化仓库
- git status--查看仓库的状态,是一个非常常用的命令,工作数和仓库在被操作的过程中,状态会不停发送变化,通过git status可以查看当前的状态。
- git add --向暂存区中添加文件,如果只是用Git仓库的工作树创建了文件,那么该文件并不会被计入Git仓库的版本管理对象中,所需我们需要用git add 讲其加入暂存区中。暂存区只是提交之前的一个临时区域
- git commit--保存仓库的历史记录 通常 命令为 git commit -m xxx -m 后面的参数标示提交的信息
- git log 查看提交日志
- git log xxx文件 只显示该目录下的日志,如果是文件名,就会显示该文件的相关日志
- git log -p 显示提交所带来的改动
- git log -p xxx文件 显示文件的改动
- git diff 查看更改前后的差异
- q 在git命令行中退出,一个q按键
git分支操作
- git branch 显示分支一览 带*开头的是当前的分支
- git checkout -b xxx 创建,切换分支
- git checkout xxx 切换分支
- git checkout - 切换到上一个分支 "-"替代了分支名,通常master分支作为主分干
- git merge 合并分支 git merge --no-ff xxx
- git log --graph 以图表形式查看分支
- git reset 回退历史版本,使用 git reset --hard xxx(这个提供目标点的哈希值通过git log 等日志查看过去提交的时间点的哈希值)
- git reflog 命令 以查看当前仓库的操作日志 gitlog只能查看当前状态为终点的历史日志
![LZ4MYR@0}99T7]XON2GBTH1.png](http://upload-images.jianshu.io/upload_images/2326281-2a6b5a90baa7c681.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
- git commit -am 将add 和commit命令结合起来 git commit -am xxx备注
- git push -u origin master(xxxx) 推送到远程仓库 -u 可以在推送的同时,将origin仓库的xxx作为本地仓库的当前分支的上游。
- 以后 通过 git pull 就可以从远程仓库获取内容
- git clone 克隆
- git checkout -b xxx origin/xxx 将远端中xxx分支获取到本地仓库
- git pull 获取
GitHub的功能
点击头像
- Explore:GitHub公司特别推荐的软件,按语音筛选本日/周/月的热门仓库/开发者(里面好多都是高大上的东西)
- integrations:GitHub 功能集成工具(包括 Travis CI、Code Climate、Gitter 等)
- Pull Requeste 显示用户已经进行过的Pull Request
- Issues 查看用户拥有的权限的仓库 或分配给自己的Issue。用户同时进多个项目时,可以在这里一并查看
- Repositories you contribute to:显示用户做个贡献的仓库。
- Your Repositories 用户自己的仓库,根据更新时间顺序来拍
这是安卓牛人的github 作为模板案例
- Popular repositories (好像是在看个人界面才看的到) 显示公开仓库中受欢迎,拥有大量Star的部热门仓库
- contributions 活跃度 一格标示一天 ,记录用户对拥有读取权限的仓库的大致贡献度。贡献度的衡量标准包括发送Pull Request的次数,写Issue的次数,进行提交的次数等。颜色越深贡献度越高
- Contribution Activity,按照时间顺序显示具体贡献活动的链接。
- Public Activity 显示该用户公开活动。指用户做了什么,比如仓库的提交或者pull Request 等,大量的公开信息都会记录在这里。
- Repositories 显示该用户公开的仓库。Fork来的仓库也会显示在这
仓库的名称,语言,简要说明,最终更新日期都会出现在这里,星形图案旁边的数字表示star的人数,在旁边表示Fork数,背景显示的图标表示仓库的更新频率,横向为时间轴,右侧为最新时间。色块越高,仓库的更新频率越高
仓库
仓库的url https://github.com/用户名/仓库名/ (如 https://github.com/alibaba/fastjson)
- Code 显示该仓库的文件列表
- watch 这个按钮可以watch该仓库。今后该仓库的更新信会显示在用户的公开活动中。start 这个数越高 越受欢迎,watch和start的区别在于watch之后该仓库的相关信息会在通知中显示,让用户可以跟踪仓库的内容而Star更像是书签,让用户将来可以在Star标记的列表中找到该仓库。
- Fork 这个数字越大,表示参与这个仓库的人越多
-
Issus 用户BUG报告,功能添加,方向性讨论等,将这些以Issue形式进行管理。Pull Request时也会创建Issue。判断显示的数字是当前处于Open状态的issue 数
- Pull Requests 可以查看列表中并管理Pull Request 。代码更改和讨论都在这里进行。判断显示的数字表示尚未Close的Pull Request
- Wiki常用与记录开发者共享的信息或软件文档
- Pulse显示该仓库最近的活动信息。
- Graphs 通过图表的心事显示该仓库的各项指标
- clone or download 下载或者clone项目
- commit 多少次提交 点击可以查看提交历史
- branches 可以查看仓库的分支列表
- releases 显示仓库的标签。同时将标签加入时的文件以归档形式(ZIP,tar.gz)下载到本地。软件在版本升级时都会打标签,如果需要特定版本的文件,可以从这里查找
- contributors 显示该仓库进行提交的程序员名单。如果你对该仓库发送过Pull Request并且被采纳,那么在这里就能找到自己的名字。
- Branch:master 可以点击切换到不同分支去查看差别
查看文件的差别
我们点击左侧行号某一行就会成黄色,同时url末尾会添加#Lxx 如果我要查看第99到101,查看url末尾地址
如果我们要快速查看某个文件 我们在最开始的界面 按住键盘的T,然后搜索关键字 就很快搜索到了
- Blame 可以能够按行显示最新提交的信息
- History可以查看该文件的历史记录
在GitHub 上直接修改url可以给用户已多种形式查看差别
查看分支的区别
查看几天的区别
https://github.com/alibaba/fastjson/compare/maters@{7.day.ago}...master
- day
- week
- month
- year
指定期间可以使用四个单位。如果差别过大则不会列出所有提交只显示最近的一部分
Lssue
开发者为了跟踪Bug及软件相关讨论,进而方便管理,创建了Issue。
GitHub的Issue的评论可以使用GFM的语法进行描述
具体可以自己去尝试
Issue可以添加标签进行管理,点击标签,可以只显示该标签的Issue,标签可以自由从创建,BUG,任务备忘等分类。
如果Issue积累到一定数量,可以考虑设置标签
在Issue下有个milestones 可以设置里程碑(个人理解版本,管理任务,查看某个版本下还有剩余的Issue)
Pull Request
是用户修改代码想对付查看发送采纳请求的功能,也是GitHub的核心功能,
- conversation标签页,可以查看当前Pull Request相关的评论以及提交的历史记录,人民可以在这里评论互相探讨。
- Files Changed 可以查看当前Pull Request更改的文件内容的前后差别
Pull Request流程
- Fork 点击Fork创建自己的仓库,新建仓库
- clone
- branch
- 添加代码
- 提交修改
- 创建远程分支
- 来到github 页面查看自己提交的分支, 查看分支差别页面, 有个creat pull Request 按钮 随后填写相应的表单
- 来到github页面 点击pull Request 查看自己提交的状态
接受Pull Request
- 代码审查
- 查看图片的区别 https://github.com/blog/817-behold-image-view-modes官方博客,可以对图片进行对比
Git Flow
以部署为中心的开发模式
流程
- 令master分支常保持部署的状态
- 进行新的作业时要从master分支创建新分支,新分支名称要具有描述性
- 在新建的本地仓库分支中进行提交
- 在GitHub端仓库创建同名分支 ,定期push
- 需要帮助或反馈时创建Pull Request,以Pull Request进行交流
- 让其他开发者进行审查,确认作业完成后与master分支合并
- 与master分支合并后立刻部署