一些废话

对于使用CVS/SVN出身的人来说,Git始终有点难上手(比如我),因为概念较多,一时理不清,尽管网上已经有很多教程,其实后来我发现,要掌握它的办法就是使用它,着手开始用它做源码管理,有问题就解决问题,见招拆招,这样就成了。

本文并非将Git怎么用的,如果对Git缺乏基本的了解,那这里有一个不错的教程:Git教程

大家都知道,Git是分布式的,如果仅仅只有一个本地库的话,一来不利于协同工作,二来也不够保险,万一本地硬盘坏了呢?所以即便是一个人在做开发,也最好找一个远程的代码库来托管。可以选择自己架一个,但稍微有些麻烦,并且由于没有公网固定ip地址,只能在局域网里用用,一旦在家办公就不轻易能检出代码;另一个选择就是用现有的代码托管服务,最最著名的无疑是github.com,但github.com只能免费创建公共容器,也就是说所有人都能看到的容器,如果要创建私有容器只允许自己的人看到的话,要付点钱,虽然也不算贵,现在不是有种观点“能用钱解决的就不要花时间”么?但由于一些众所周知的原因,github.com在大陆访问是不是会出现些不稳定的情况。那国内有没有类似github.com这样的代码托管服务呢?答案是肯定的,开源中国提供的就很不错:git.oschina.net,而且,即便是创建私有容器,它也是免费的,太棒了,我目前用下来大致上OK,有时候会稍微有点卡,但都可以接受。

一点原理说明

Git的身份验证方式和SVN有些不同,SVN可以使用自带的SVN协议和简单的用户名/密码机制验证用户身份,而Git则可使用https或ssh的连接方式,加系统用户名/密码验证,或者通过在服务器端保存用户公钥的方式来验证用户身份。很明显,oschina的做法是在服务器端保存用户公钥这种方式,因为不可能给成千上万的用户都创建系统帐号。服务器端一旦有了用户的公钥,就可以验证用户身份了,(能用这个公钥解开的密文,一定是用对应的私钥加密的,谁有对应的私钥,当然是对应的用户了)所以我们要做的是将我们的公钥上传到服务器上去,这样服务器就认我们了,根本不再需要额外的用户名/密码。我们下面也将采用ssh的方式来使用远程Git服务。

ssh的首次连接

这里还稍微有点点小问题要说明一下的,https协议通常是使用一些权威机构颁发的证书,你去访问https的时候就能够通过证书来确认这些网站的身份是可信的,而ssh则通常使用自己生成的证书,你怎么确定你要链接的那个服务器的身份呢?如果那个服务器是个假冒服务器,那怎么办?所以第一次用ssh连接远程服务器的时候,会给出类似的提示:

这是Windows环境下使用的SSH Secure Shell客户端的提示,在*nix下大致如此:

提示会给出远程主机公钥的“指纹”来让你确定其真实身份(因为公钥很长,很难用肉眼比对,所以做了个指纹摘要供用户查看),如果确定,就点“Yes”,在*nix环境下,会将这个公钥信息保存到~/.ssh/known_hosts文件中,下次就无需再询问你了,下面第一次连接远端服务的时候若是出现类似的确认,就不要感到奇怪了。

注册与创建项目

好,前面只是提提原理,以便大家理解,下面言归正传,讲讲如何用oschina的git托管服务。

第一步当然是先注册,到“http://git.oschina.net/”去,然后……注册过程很简单,不用说,你提供的email就相当于是你的用户名了。

注册完登录。然后就可以创建自己的“项目”了,项目就相当于容器,比如我创建了一个容器叫git_test。

这个时候也先别急着把你的本地容器push上来,你还没上传你的公钥呢,对吧?

生成和配置公私钥

要上传公钥,得先做一对公私钥,否则上传什么?使用ssh-keygen来做这个事情。(Windows的话先弄个cygwin)

打开:“https://git.oschina.net/keys”,点“添加公钥”,标题随便输,我习惯性地写自己电脑的名字,比如“guogangj’s Mac”,公钥的内容可以这样获取到:“cat ~/.ssh/id_rsa.pub”。把内容完整填入文本框中即可,注意不要随意在中间添加换行回车空格啥的。

保存,输入密码确定,这样就把公钥存到服务器上去了。顺便说一下,如果你想知道这个公钥的指纹的话,可以这样:

这样服务器端的配置就算完成了,测试一下:

若出现了一些意外的话,可以参考一下这个:可能的解决方案

Git的配置

本文当然不会告诉你具体怎么去使用Git,但在正常push和pull之前,我们还是有些东西要配置一下的。下面是配置用户名和email,这是全局配置的,不只是对一个Git容器生效,配置会被保存在“~/.gitconfig”中。

$git config --global user.name "guogangj"

$git config --global user.email "guogangj@163.com"

另外还可以配置一下要忽略的文件的列表,有些文件不必加入到Git中嘛,比如生成的.o文件,一些用户相关的配置啥的,以XCode为例,可以生成这么一个文件“~/.gitignore”,内容如下:

#Exclude the build directory
build/* #Exclude temp nibs and swap files
*~.nib
*.swp #Exclude OS X folder attributes
.DS_Store #Exclude user-specific XCode files
*.xcworkspace
xcuserdata

再设置一下:

git config --global core.excludesfile=~/.gitignore

配置完成。使用起来还是非常简单的,clone的方法:

$git clone git@git.oschina.net:guogangj/git_test.git

“git@git.oschina.net:guogangj/git_test.git”这个地址可以在项目主界面上得知:

完了之后可以看看remote的选项:

$git remote -v

这样就可以轻易的pull和push了。

最新文章

  1. 1Caesar加密
  2. 编码UTF-8
  3. cocospod 安装和使用 podfile 问题解决
  4. Revit中如何自定义快捷键
  5. 用iconv指令解决utf8和gb18030编码间转换
  6. 新颖的O2O商业模式,江水平和他的装修队
  7. Logstash add_field 参数应用
  8. vi / vim 删除以及其它命令
  9. Android Dev
  10. mysql 安装补充
  11. gethostbyname()函数说明
  12. 使用CSS如何悬停背景颜色变色 onmouseover、onmouseout
  13. LinQ—扩展方法
  14. JavaScript中的execCommand
  15. Linux 下配置Nginx,MySql,php-fpm开机启动
  16. Hot Chocolate 一个.net 平台的graphql 框架
  17. html页面转jsp后 乱码问题。
  18. PL/SQL如何调试sql语句、存储过程
  19. Oracle&SQLServer中实现跨库查询
  20. HDU 2842 Chinese Rings(常数矩阵)

热门文章

  1. iOS判断数组不为空
  2. 5ucms后台调用标签
  3. javascript语言精粹摘要
  4. jekyll安装的斗智斗勇
  5. delphi XE5皮肤的使用
  6. 用nexus搭建maven私服
  7. Hibernate和Jpa的关系
  8. How to Use Lucene.NET with Windows Azure SQL Database
  9. (转)RHEL/CentOS 6.x使用EPEL6与remi的yum源安装MySQL 5.5.x
  10. PROC SORT