git简介

来源:互联网 发布:如何优化公司人力成本 编辑:程序博客网 时间:2024/05/12 11:06


我对于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用法,主要就是操作右键弹出的菜单。

指令(英文版)指令(中文版)功能说明备注git clone ..git 克隆 ..克隆一个项目代码库到本地(对应于svn的checkout)在非版本库目录下右键git create ..git 在这里创建新版本 在非版本库目录下右键git sync ..git 同步 ..弹出对话框,用于同步两个版本库在版本库目录下右键pull拉取将远程版本库拉到本地版本库git sync 弹出的对话框push推送将本地版本库推送到远程版本库git sync 弹出的对话框git commit ..git 提交 ..提交到本地版本库,成功后弹出对话框可以推送到远程版本库在版本库目录下右键TortoiseGitTortoiseGit弹出更多菜单,跟tortoisesvn类似在版本库目录下右键

和tortoisesvn相同的用法

除了 clone , pull , push 这些指令之外,tortoisegit在用法上跟tortoisesvn是差不多的。

工具(linux)

首先,从服务器上下载版本库:

git clone https://github.com/wuyao721/51docs.git

emacs + git-emacs

emacs用户可以通过插件 git-emacs 来操作git版本库。把下面的代码加入 emacs 配置文件:

(global-set-key (kbd "C-c p v g") 'git-status)(autoload 'git-status "git-status" "subversion interface for emacs" t)

也可以使用 magit ,它也是emacs的插件。

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之间的五个基本区别

转载请注明出处:http://www.wuyao721.com/git-intro.html