我对于git,08年就大闻其名,却一直不敢尝试。只因为svn已经够我用了。所以即使googlecode已经支持git,我还是坚持使用svn。
但是最近googlecode老连接不上,真纠结。这使我不得不放弃它,投奔github,借此机会体会git的魅力。
2013-01-21更新:今天一早就在微博上看到github被墙了,一看,果真如此,子域名都访问不了。立此纪念。
git的优势
git比起传统的版本控制系统,有如下的优势:
- 分布式版本控制系统
- 协作开放变得轻松自然
- 减少开发人员沟通的开销
github
github 是一个网站,同时也是一个项目仓库。我们只要在网站上注册一个帐号,然后就可以在上面免费创建开源项目。利用git这个分布式版本管理系统,我们可以吸引到更多的人关注,加入我们的项目。
github的访问速度挺快的,这也是越来越多人使用它的原因。
证书登录
当然也可以用证书登录,原理跟ssh证书登录一样。参考我这篇文章 ssh证书 。
使用证书登录,它是不支持https的方法的,举个例子,我的一个项目https://github.com/wuyao721/51docs ,
这个地址可以通过证书做push,pull等操作:
git@github.com:wuyao721/51docs.git
而下面这个地址证书是不起作用的,必须使用用户名和密码:
https://github.com/wuyao721/51docs.git
工具(windows)
github for windows
到 这里 下载windows平台的github客户端。
tortoisegit
使用过程中我觉得 github for windows 并不好用,所以我找到了另外一个工具。
svn 有一个工具叫 tortoisesvn ,那么 git 也有它的 tortoisegit 。
msysgit
tortoisegit的官网告诉我们,它还依赖于 msysgit 。msysgit是核心程序,tortoisegit只是它的皮而已。
值得注意的是,先安装tortoisegit,再安装msysgit。
git-credential-winstore
令人纠结的是tortoisegit没次推送都要填写用户名和密码。网上有人说用 _netrc 来记录用户名密码,我试过是可行的。
_netrc 是明文的,会暴露用户信息,还好有另外一个解决办法。它就是 git-credential-winstore ,从名字可以猜测到这是git在windows用来存储用户名密码的工具。它可适用用于 Windows XP 和 Windows 7 。
怎么使用?只要双击运行它就可以了。
tortoisegit操作 & 观念的转变
windows平台下,我的使用感受是tortoisegit比较好用。所以这里的操作是针对tortoisegit来说的。
像我这种以前没有用过分布式版本管理系统的程序员,学习git不算是特别难的事情,但是也需要一个学习的过程。最主要是观念的转变,我从一开始就想把git当做svn来用,所以用的很不习惯。
本地的版本库
在git的世界里,每个本地的代码库都是一个完整的git系统。使用tortoisegit提交代码(commit),其实只是提交到本地的git版本库。
github的版本库
更新本地版本库后,我们就可以将推送到远程版本库(例如我用的github),合并到master或者其它分支。
常用操作
我在这个列出了一些常见的tortoisegit用法,主要就是操作右键弹出的菜单。
指令(英文版) | 指令(中文版) | 功能说明 | 备注 |
---|---|---|---|
和tortoisesvn相同的用法
除了 clone , pull , push 这些指令之外,tortoisegit在用法上跟tortoisesvn是差不多的。
工具(linux)
首先,从服务器上下载版本库:
git clone https://github.com/wuyao721/51docs.git
FAQ
Key is already in use
说明这个key已经被某些用户或项目使用了。先查一下是被谁用了:
ssh -T -i ~/.ssh/id_rsa git@github.com
如果这个key被自己的某个项目使用了,那么将它添加在用户设置里而不是项目设置。
如果这个key给其它人用了,那么就换个key吧。
参考资料
- TortoiseGit + GitHub 使用指南
- git-credential-winstore
- 终于解决“Git Windows客户端保存用户名与密码”的问题
- Git – How to use .netrc file on windows to save user and password
- github生成SSH公钥
- git/ TortoiseGit如何使用证书登录
- key-is-already-in-use-when-trying-to-add-ssh-key-to-github
- Error: Key already in use
- Managing deploy keys
- Working with Git from Emacs
- 在Emacs中使用git
- GIT和SVN之间的五个基本区别