一些废话

对于使用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了。

开源中国(oschina)的Git托管的更多相关文章

  1. 在开源中国(oschina)上创建托管项目

    ***************************************************************** 目标: 1.能上传自己的项目到oschina上并且进行管理 2.能进 ...

  2. 用开源中国(oschina)Git管理代码(整合IntelliJ 13.1.5)

    简介 开源中国提供了Git服务(地址:http://git.oschina.net/),在速度上比国外的github要快很多.使用了一段时间,感觉很不错.oschina git提供了演示平台,可以运行 ...

  3. Windows 下使用git 将代码托管到开源中国-(http://git.oschina.net/)

    一.准备工作 当然是准备在windows 下使用需要的环境,和工具. msysgit  下载地址:http://msysgit.github.io/ TortoiseGit 下载地址:https:// ...

  4. 开源中国(oschina.net)能给我一个交代吗?

    一年前准备把goolge上面diocp项目移动到开源中国上面,当时觉得开源中国的的速度还不错,都叫开源中国了,觉得应该稳定. 后来把今年开源mybean项目也放在上面了,还有一些小的项目都放在上面,就 ...

  5. PhpStorm 集成 开源中国(oschina.net)的Git项目,提交SVN时注意事项

    第一步:配置 git.exe File -> Default Settings -> Version Control -> Git -> Path go Git executa ...

  6. PhpStorm 9.03 集成 开源中国(oschina.net)的Git项目,提交SVN时注意事项

    第一步:配置 git.exe File -> Default Settings -> Version Control -> Git -> Path go Git executa ...

  7. 开源中国社区 https://git.oschina.net/ 添加 SSH 公钥 添加

    首先可以参考官方的帮助文档 http://git.mydoc.io/?t=154712 然后进去码云首页 http://git.oschina.net 然后找到右边的头像点击一下  然后点击修改资料 ...

  8. 在开源中国(oschina)git中新建标签(tags)

    我今天提交代码到主干上面,本来想打个标签(tags)的. 因为我以前新建过标签(tags),但是我现在新建的时候不知道入库在哪了.怎么找也找不到了. 从网上找资料也没有,找客服没有人理我,看到一个交流 ...

  9. 使用git推送代码到开源中国以及IDEA环境下使用git

    使用git推送代码到开源中国以及IDEA环境下使用git 在学习Java的过程中我们会使用到git这个工具来将我们本周所编写的代码上传到开源中国进行代码托管,而在使用git的时候有很多的同学由于不会操 ...

  10. Ninesky源代码从Codeplex迁移到开源中国

    原来Ninesky代码一直发在Codeplex.com上,最近两三个星期了代码一直迁入不上去,网站访问也经常出错. 所以把代码放到开源中国去了,项目地址https://git.oschina.net/ ...

随机推荐

  1. interactivePopGestureRecognizer

    苹果一直都在人机交互中尽力做到极致,在iOS7中,新增加了一个小小的功能,也就是这个api:self.navigationController.interactivePopGestureRecogni ...

  2. Thinkphp去掉index.php

    1.httpd.conf配置文件中 #LoadModule rewrite_module modules/mod_rewrite.so 把前面的警号去掉2.AllowOverride None 将No ...

  3. javascript里的封装

    用javascript闭包的特性,可以模拟实现私有变量.私有方法. var myObject = =(function(){ var privateValue; function privateMet ...

  4. parseInt 和parseFloat 区别

    parseInt();返回整数, 有第二个参数,第二个参数是多少进制 parseFloat(); 可返回浮点数:没有第二个参数,默认10进制

  5. STM32之独立看门狗与窗口看门狗总结

    一.独立看门狗 STM32 的独立看门狗由内部专门的 40Khz 低速时钟驱动,即使主时钟发生故障,它也仍然有效. 看门狗的原理:单片机系统在外界的干扰下会出现程序跑飞的现象导致出现死循环,看门狗电路 ...

  6. JS-offsetParent定位父节点

    offsetParent:离当前元素最激动呢一个有定位的父节点 如果没有定位父级,默认是body IE7以下如果当前元素没有定位默认是body,如果有定位就是html IE7以下,如果当前元素的某个父 ...

  7. android shader 用法

    转自 http://blog.csdn.net/abcdef314159 http://blog.csdn.net/aigestudio/article/details/41799811 Shader ...

  8. 响应式web设计之CSS3 Media Queries

    开始研究响应式web设计,CSS3 Media Queries是入门. Media Queries,其作用就是允许添加表达式用以确定媒体的环境情况,以此来应用不同的样式表.换句话说,其允许我们在不改变 ...

  9. X86上搭建交叉工具链,来给龙芯笔记本编译本地工具链(未完待续)

    故事的背景是,我买了一台龙芯2F的笔记本来装B. 为什么说是装B呢?因为不但操作系统是Linux,而且CPU还是龙芯的. 一般人有这么酷的装备吗?简直是装B大圣啊. 这里一定要申明一点,本人不是IT技 ...

  10. CentOS常用的文件操作命令

    CentOS下面常用的文件操作命令: cd pwd NO1. 显示当前路径 [root@rehat root]# pwd NO2. 返回用户主目录 [root@rehat root]# cd NO3. ...