Git和Github


Git是一个分布式的版本控制系统,最初由Linus Torvalds编写,用作Linux内核代码的管理。在推出後,Git在其它项目中也取得了很大成功,尤其是在Ruby社区中。目前,包括Rubinius和Merb在内的很多知名项目都使用了Git。Git同样可以被诸如Capistrano和Vlad the Deployer这样的部署工具所使用。

GitHub基于Rails的Git库托管

  
  

github

如前所述,作为一个分布式的版本控制系统,在Git中并不存在主库这样的概念,每一份复制出的库都可以独立使用,任何两个库之间的不一致之处都可以进行合并。
  GitHub可以托管各种git库,并提供一个web界面,但与其它像 SourceForge或Google Code这样的服务不同,GitHub的独特卖点在于从另外一个项目进行分支的简易性。为一个项目贡献代码非常简单︰首先点击项目站点的“fork”的按 钮,然後将代码检出并将修改加入到刚才分出的代码库中,最後通过内建的“pull request”机制向项目负责人申请代码合并。已经有人将GitHub称为代码玩家的MySpace︰
  在GitHub进行分支就像在Myspace(或Facebook [...])进行交友一样,在社会关系图的节点中不断的连线。
  GitHub项目本身自然而然的也在GitHub上就行托管,只不过在一个私有的,公共视图不可见的库中。开源项目可以免费托管,但私有库则并不如此。Chris Wanstrath,GitHub的开发者之一,肯定了通过付费的私有库来在财务上支持免费库的托管这一计划。
  是的,我们正是这麼计划的。通过与客户的接洽,开发FamSpam,甚至是开发GitHub本身,GitHub的私有库已经被证明了物有所值。任何希望节省时间并希望和团队其它成员一样远离页面频繁转换之苦的人士都会从GitHub中获得他们真正想要的价值。



 GitHub is a web-based hosting service for projects that use the Git revision control system. It is written using Ruby on Rails by Logical Awesome developers Chris Wanstrath, PJ Hyett, and Tom Preston-Werner. GitHub offers both commercial plans and free accounts for open source projects. According to the Git User's Survey in 2009, GitHub is the most popular Git hosting site.
  The site provides social networking functionality like feeds, followers and the network graph to display how developers work on their versions of a repository.
  GitHub also operates a pastebin-style site, wikis for the individual repositories and web pages that can be edited through a git repository.
  As of January 2010, GitHub is operated under the name GitHub, Inc.






1. GIT


相比CVS/SVN,Git 的优势:
- 支持离线开发,离线Repository
- 强大的分支功能,适合多个独立开发者协作
- 速度块

更多的细节参见 http://mgcore.com/viewthread.php?tid=15556

Git使用指南 http://www.linuxgem.org/user_files/linuxgem/Image/git-tutor.pdf

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 "[email protected]"
4、将.ssh/id_rsa.pub拷贝到GitHub网站


5、为了方便,设置ssh不输入口令
# eval `ssh-agent`
# ssh-add
(输入passphrase)

6、测试是否能联通GitHub
#ssh [email protected]
如果配置正确,显示
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 [email protected]

8、创建本地新项目工作树
# mkdir new-project
# cd new-project
# git init
# touch README
# git add README
# git commit -m 'first commit'
定义远程服务器别名origin
#  git remote add origin [email protected]: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,以及git的哲学
http://crazycode.iteye.com/blog/212536

这两年我一直很推崇subversion,特别是其轻量分支结构很是喜欢,一直以为svn是我心目中理想的版本控制工具,工作上也在大力采用。前段时间因为偶尔在外无法上网,在ubuntu上安装了一个svk做离线提交,对于分布式版本控制系统的思想有所了解。
这些天一直在看git/github,慢慢明白了为什么linus一直不喜欢cvs/subversion这类版本控制工具,对于这类和大量开发量协同的开发而言,cvs/svn的确不是很好的选择,而相对自由的分布式版本控制系统,在组装不同人员的工作成果上,提供了更高级的分层控制方式,linus真的是天才。
而github,更是在git的基础上,提供全新的开发协同平台。我在github上注册了一个帐号,然后可以fork我感兴趣的项目,并把自己的修改提交到自己的git上,确信可以把自己的工作内容提交到上一层开发人员时,在github平台上request pull就可以了,上层开发人员会有选择的接受其他人的修改,这一过程简化了开源开发大量的管理过程。这个方式,我喜欢。
不过,对于象我所在的这样的下游软件开发组织而言,周围大部分人都很难再接受新东西的情况下,这个的开发方式也许只有成立一支Dream Team才有可能实现。我嘛,还是尝试使用git-svn比较实际,呵呵。


你可能感兴趣的:(Git和Github)