1. GIT
相比CVS/SVN,Git 的优势:
- 支持离线开发,离线Repository
- 强大的分支功能,适合多个独立开发者协作
- 速度块
中文版Git使用指南 点击这里。
2. GitHub
GitHub是一个托管Git (开源或闭源)项目的网站,闭源收费,最低7$/月起,免费的300G空间。价格表如下:
使用GitHub步骤:
1、申请GitHub帐户 xxx ,创建名为new-project的新Repository
2、安装Git客户端(Linux)
#yum install git git-gui
3、 生成密钥对,这样项目可以push到 GitHub上
#ssh-keygen -t rsa -C "xxx@gmail.com"
4、将.ssh/id_rsa.pub拷贝到GitHub网站
5、为了方便,设置ssh不输入口令
# eval `ssh-agent`
# ssh-add
(输入passphrase)
6、测试是否能联通GitHub
#ssh git@github.com
如果配置正确,显示
ERROR: Hi xxx! You've successfully authenticated, but GitHub does not provide shell access
Connection to github.com closed.
7、设置Git全局用户配置
# git config --global user.name "xxx"
# git config --global user.email xxx@gmail.com
8、创建本地新项目工作树
# mkdir new-project
# cd new-project
# git init
# touch README
# git add README
# git commit -m 'first commit'
定义远程服务器别名origin
# git remote add origin git@github.com:xxx/new-project.git
本地和远程合并,本地默认分支为master
# git push origin master
GitHub网站上就可以看见了, http://github.com/xxx/new-project
9. 更新文件
# vi README
自动commit更改文件
# git commit -a
更新至远程
# git push origin master
10. 创建和合并分支
#git branch 显示当前分支是master
#git branch new-feature 创建分支
# git checkout new-feature 切换到新分支
# vi page_cache.inc.php
# git add page_cache.inc.php
Commit 到本地GIT
# git commit -a -m "added initial version of page cache"
合并到远程服务器
# git push origin new-feature
如果new-feature分支成熟了,觉得有必要合并进master
#git checkout master
#git merge new-feature
#git branch
#git push
则master中也合并了new-feature 的代码
再登录到GitHub可以看见"Switch Branches"下的分支选项:
GitHub还有一个很实用的功能,查看开发进程网络图(Network):
写在前面:
第一次听说GitHub是在kissy源代码转到GitHub上托管的时候,最初的感觉是类似Google Code和SourceForge,并没有了解具体的内容,查询资料汇总如下:
GitHub.Com是什么?
GitHub可以托管各种Git库,并提供一个web界面,但与其它像 SourceForge或Google Code这样的服务不同,GitHub的独特卖点在于从另外一个项目进行分支的简易性。为一个项目贡献代码非常简单:首先点击项目站点的“fork”的按钮,然后将代码检出并将修改加入到刚才分出的代码库中,最后通过内建的“pull request”机制向项目负责人申请代码合并。已经有人将GitHub称为代码玩家的MySpace。GitHub主要用Rails实现。
Git是什么?
The stupid content tracker,傻瓜内容跟踪器。Linux 是这样给我们介绍Git的。Git是用于Linux内核开发的版本控制工具。与常用的版本控制工具CVS, Subversion等不同,它采用了分布式版本库的方式,不必服务器端软件支持,使源代码的发布和交流极其方便。Git 的速度很快,这对于诸如 Linux kernel 这样的大项目来说自然很重要。 Git 最为出色的是它的合并跟踪(merge tracing)能力。作为开源自由原教旨主义项目,Git没有对版本库的浏览和修改做任何的权限限制。它只适用于 Linux / Unix 平台,没有Windows版本,目前也没有这样的开发计划。
GitHub支持SVN?
GitHub支持SVN版本控制,只不过是只读的,不能提交。
如何用SVN检出GitHub上的项目?
kissy项目:svn checkout http://svn.github.com/kissyteam/kissy.git
tinymce项目:svn checkout http://svn.github.com/tinymce/tinymce.git
规律很好找吧?如果你像我一样,只是用来研究代码,那么只读又有何妨?
写在后面:
Git很强大,可惜Linux不懂,想了解的请自行搜索。