将敏捷开发导入开发现场的领军人物
以顾问身份就web应用的开发及服务指导过多家企业和团队
图灵社区会员
--------
社会化编程
各位在狭小的空间里呆上一段时间之后 再出门时候
是否有一种豁然开朗的感觉
对日外包出身的我来说 社会化编程 就给了我这种感觉
外包行业在IT界只是极端个例
让全世界码农看自己代码的事情
------
与全世界的开源开发者 交流代码心得
------
编写了小程序却找不到人指点
对某款开源软件的源代码感兴趣 为中意的软件出一份力
日系技术书刊 手把手教学风格
---------
本书有一个供各位实践的网站
-----
读万卷书不如行万里路
-------
支鹏浩
-------
代码审查不到位 审查效率低下
没有一个简单高效 能在一天之内添加多个功能的开发流程
池田大树
---------
《WEB+DB PRESS》
《详解GIthub----使用Pull Request打造高效率的软件开发》
---------------、
Github是为开发者提供Git仓库的托管服务
总部位于旧金山
章鱼还是猫的
octocat
---------
https://octodex.github.com/
------------------
为开发者 团队 提供了一系列功能 帮助其提高效率 高品质地写代码
-------
创始人之一
Chris Wanstrath
----------
https://github.com/features/hosting
=================
http://www.slideshare.net/rubymeetup/inside-github-with-chris-wanstrath
=============
2013年12月 Github托管的仓库已经超过1000万
========
http://git-scm.com
======
Github是网络上提供Git仓库的一项服务
理解Git就是熟练运用Github的关键所在
==========
群管理 Groupware
CRM 顾客关系管理
等脱颖而出
用于辅助多人协同工作的软件层出不穷 大部分又退出了历史舞台
协作形式变化
=======
然而在以程序员为代表的 软件开发者之间 一直都没有一个用来辅助多人协同编程的关键性软件
软件开发者
版本管理
BUg跟踪系统
代码审查工具
邮件列表
IRC
=============
Pull Request
在开发者之间引起化学反应的
============
Pull Request 是指开发者在本地对源代码进行更改后
向Github中托管的GIt仓库请求合并的功能
===============
Pull Request上通过评论交流
例如 修改了BUG 可以合并一下吗
我搞了一个新的功能可以合并一下吗
===========
开源世界 社会化编程
软件开发方法的一次革命都不为过
Social coding 社会化编程
以前的Github上就是社会化编程
=======
随着Github的出现 软件开发者们才真正意义上的拥有了代码
世界上任何人都可以比以前更加容易地获得源代码
将其自由更正并加以公开
========
在Github出现之前 软件开发中只有一小部分 人拥有更改源代码的权利
这个特权阶级掌握着开发的主导权
开发者在改写 发布源代码之外往往需要花更多时间和精力去说服这个特权阶级
导致了许多起初效率很高的流行软件越发保守化 最终被时代所抛弃
=======
如今的IT业界已经没有了终身雇用制
人才流动性日益增大 可以说每个月我们都能在一些著名的开发者的博客中看到
月末刚发布消息 辞职了 月初 又入职了
==========
Git仓库管理功能是Github的核心
因此
使用Github之前必须先掌握Git的相关知识
同时本地设备还要安装Git的环境
------
Git属于分散型版本管理系统
2005年开发了Git的原型程序
Linux的Linus Torvalds
===========
Linux内核的更新速度在全世界也是首屈一指
势必要一个功能性 的版本管理系统来提高开发速度
=====
当时有树款版本管理软件被开发出来 但是 功能和性能
都差强人意
Subversion
============
Git功能多到夸张
让人觉得至今没能掌握它
削减了笔者在版本管理系统上的时间
http://suversion.apache.org/
==========
版本管理就是管理更新的历史记录
记录一款软件添加或更改源代码的过程
回滚到特定阶段
恢复误删的文件
==========
Github将仓库Fork给了每个用户
Fork就是将Github的某个仓库复制到自己的账户下
Fork出的仓库与原仓库是两个不同的仓库
开发者可以随意编辑
Github
Fork
git--------------->git
<---------------
Pull Request
| |
| |pull push
| |
开发者 开发者
==============
本地开发环境中有仓库 开发者不必链接远程仓库就可以进行开发
即便是不通过Github
开发者之间也可以push pull
==========
只要规则得当 分散型同样像集中型那样进行管理
多个仓库并存的概念
http://msysgit.github.io/
========
Git Bash
============
设置姓名和邮箱地址
================
git config --global user.name "firstname Lastname"
git config --global user.email "[email protected]"
这个命令会在 "~/.gitconfig"中以如下形式输出设置文件
想更改这些信息时候
可以直接编辑这个设置文件
这里设置的姓名和邮箱地址 会用在Git的提交日志上
在上传公开仓库时候
姓名 邮箱会随着提交日志一同被公开
======
代码是全世界看到 尽量用英文
==========
提供命令输出的可读性性
将color.ui设置为auto可以让命令的输出拥有更高的可读性
~/.gitconfig中会增加一行
[color]
ui=auto
===============
创建Github账户
https://github.com
=============
Github上的随处可见的头像 账户独有的标识
是通过 Gravatar 服务显示的
使用过wordpress的读者可能对它有了解
==========
只要使用创建Github账户注册的邮箱 在Gravatar上设置头像
Github的头像就会变成您设置的样子
=========
运行下面的 命令创建SSH Key
ssh-keygen -t rsa -C "[email protected]"
密码需要在认证时输入
=========
id_rsa 文件是私有密钥
id_rsa.pub是公开密钥
============
在github上添加公开密钥 今后就可以用私有密yao 进行认证了
点击右上角 账户设定按钮Account Settings
选择SSH keys菜单
点击 Add SSH Keys之后
Key部分粘贴id_rsa.pub文件里面的内容
查看id_rsa.pub文件内容的 方法
cat ~/.ssh/id_rsa.pub
=============
就可以用手中的私钥与Github进行认证和通信了
========
ssh -T [email protected]
======
===============
使用社区功能
Github以人为焦点
那么在创建账户后不妨试试Follow别人
在用户信息页面的右上角点击如图所示的按钮
=============
对于仓库 也可以使用watch功能获取最新的开发信息
如果您经常使用的某个软件 正在 GIthub上进行开发
不妨去watch一下
-===================
在Github上进行交流时用到的Issue
评论
wiki
都可以用Markdown语法表述
从而进行标记
准确地说应该是 Github Flavored Markdown
(GFW)语法
该语法是在Markdown语法基础上扩充而来的
但是一般情况下 只要按照原本的MarkDown语法进行描述就可以
使用Github之后 很多文档都需要用Markdown来书写
全世界有大量程序员都在使用Markdown
因此掌握这种语法已经成为程序员的标准技能之一
===============
公开代码
clone 已有仓库
http://www.ituring.com.cn/article/775
==========
git status
Untracked files
这个东西还没有添加到Git仓库
git add hello.php 到暂存区 再通过 git commit命令提交
暂存区 就是在Index数据结构中 记录文件提交之前的状态
将hello.php 提交到仓库
这样一来 这个文件就进入了版本管理系统的管理之下
今后的更改管理都由Git进行
git commit -m "wwjw"
===========
git log
查看提交日志
=======
专栏 公开的许可协议
即便是在Github上公开了源代码
也不代表着作者放弃了著作权等权利
代码的权利持有人 请选择合适的许可协议
在Github上 有修正BSD许可协议
=====
Apache协议
等多种许可协议
大多数软件都使用mit许可协议
=============
MIT许可协议具有以下特征
使用没有生命许协议的软件时 以防万一最好直接联系著作者
==============
git push Github上的仓库就会更新
============
Git 初始化仓库
==============================
实际建立一个目录并初始化仓库
git init
执行这个命令就会生成.git目录
.git目录存着管理当前目录内容所需的仓库数据
称为 附属于该仓库的工作树
文件的编辑等操作 在工作树中进行 然后记录到仓库中
以此管理文件的历史快照 如果想 将文件恢复到原先的状态 可以从仓库中调取之前的快照
在工作树中打开
=====================
git status
查看仓库的状态
===========
============