在windows下使用git客户端,github源码库以及eclipse的git插件-egit的使用
#{
//v0.1//120314
简单记录
//v0.2//120316
小修改
//v0.25//120317
错别字,病句,排版,段落分段等
//v0.29//120317-2
修正本地代码库的理解错误,增加更专业描述的资源.
}#
这段时间,公司的源码库从svn迁移到了github上,从svn换用git的过程经历了一些曲折.在此先简单记录一下.
关于git与svn
刚开始搞不明白git的区别,以为和svn差不多少,稍微使用了一下才发现区别较大.
svn
首先svn是在远端或者本地建立一个源码数据库,源码和版本变更都记录在其中.本地当前项目下会有隐藏的.svn文件,记录一些当前项目的元信息,以使本地当前项目能和源码数据库中的信息接驳起来.
git
至于git比较特别,首先git会索性要求本地必须有一个源码仓库,把项目元信息也记录其中.有些人在这边可能分不清,因为会看见两种情况,有人会一个项目建立一个源码仓库,有人是用一个集中的源码仓库,一般来说,应该使用后者吧.而提交代码变更,即commit即为向本地源码库提交.然后在远端有一个git server,比如github,其实就是另一个源码版本库的所在地.这里会有push,pull的概念,看来git更注重同步的理念.无论你在本地commit多少次,git server的源码库是不会变化的,此时你要做的是,将本地源码库和远端源码库同步!这就是关键所在,你要使用push,将源码库的变更push上去.至于pull,当然是拖下来.这样的好处显而易见,即时没有在网,你也可以随时使用版本控制功能.
但是这里我还有一些不明白的地方,就是多人开发时,不同版本库的同步冲突如何解决,因为实际上比svn多了一步,不知道会不会很麻烦,后续研究.
见补丁--V0.29
在windows&eclipse上使用git
windows在专业领域不愧为万年二等公民啊,不提也罢,不提也罢 - -
如何在eclipse里面使用git?
大家肯定知道,既然是eclipse,那么会有一个插件,嗯,这个传说中的插件叫做egit.
貌似现在的eclipse已经自带了这个源,你可以直接搜这个插件,或者手动的从源下载,但是eclipse并没有给这个源一个名字,所以你添加源的话会提示你已经存在.
你可以这样:
1 help->install new software
2 点击最上边的输入框的下面一行的"Available Software Sites"
3 看见"type filter text"没有? 输入"egit",选定,edit,name咱就填个"egit"
4 好,回来,这时候插件源的下拉菜单里应该会有egit了,你选择,然后把那些乱七八糟的都装上吧,你肯定已经干了很多次了.
这里要说一下,这个egit可不是一个gui而已,而是真的包含了可执行命令工具,但是这个东西仍在发展中.....对,会有点儿蛋疼.
装好了吧,现在你在项目上右键单击,然后"team"里面的功能就是git的功能了,别和svn管理的项目弄混了哦.
基本的使用方法你可以参照这里:
http://jiangli.easymorse.com/?p=783
还有这里:
http://www.open-open.com/lib/view/open1328435726296.html
这个是一系列文章,不过有的稍微过时或者不详细,所以仅供参考,要多思考,不要怕.
比如"use or create repository in parent folder of project",我才不会这样干啦,比如你放到eclipse的workspace里肯定会很乱的.找个地方集中存放我觉得不错.
那个home变量是存放配置文件的目录.
至于你将会遇到"ref","master","branch"神马的,首先,我也没搞太清楚 - -
但是,ref应该是指项目的引用,比如一个branch也是一个ref,它是一个变量,HEAD就是当前的最后一个进入仓库的项目吧,master,顾名思义吧,也算是一个branch.
以上就是在windows上,eclipse IDE下使用git的基本套路,下面,要与github结合了 - -
-----------------------------------------------------------------------------------
首先,如果你是从svn迁移,github有一个选项,可以直接从svn库导入.然后,下面:
不要嫌冗余
在github的官方有一个纯命令行git工具使用的教程,就是egit封装的那个玩意,按照这个教程配置.稍微看一下基本命令的使用.
http://help.github.com/win-set-up-git/ ,先看到Download and Install Git 这里先.
传输协议与密钥验证
然后我要说一下,貌似git传输默认是使用ssh(通常指ssh2)协议,当然也可以使用其他常见传输协议.而ssh2协议有多种验证方式,密码,密码加证书,或者纯证书,证书就是指非对称加密的密钥啦,自己拿着私钥,把公钥放到server上,然后两边一对,server就知道是你了.
github就是用这种私钥公钥大家来配对的验证方式,当然,也有http协议的,其实是https,但是不知道是不是因为前段时间被攻击,还是第一次上传比较重要,反正我第一次push项目必须要用ssh2的方式,上去后才能看见https方式的链接,也许可以直接使用https.FQ的同志们可能知道一些ssh2,不过经常跟win打交道不和linux打交道的童鞋可能会陌生,因为win根本就不原生支持ssh2.
所以要在github上上传你的项目,首先,你得有rsa密钥对,嗯,eclipse本身有这个工具,但是...别用,木有hosts文件,坑死爹了,我在这绕了一天啊,对,尼玛还要个hosts文件.所以,前面安装的git bash有用了.
把http://help.github.com/win-set-up-git/ 后面的看完吧,我来补充,linux下默认的ssh密钥文件貌似是在.ssh文件夹下,win的默认位置是用户目录(别问俺神马叫用户目录 - -,你打开cmd看看默认路径)的ssh文件夹下,按照官方推荐的做完全套.
其中最重要的是,把生成的密钥,还有hosts文件,拷到当前用户目录的ssh文件夹下.win7和xp的用户目录是不一样的.
我没生成hosts文件之前,直接用egit来push遇到了
"Warning:Permanently added 'github.com,207.97.227.239' (RSA) to the list of know hosts.
Permission denied (publickey)"
这个狗屎问题,搜了很久很久没有确切说法,stackoverflow也看了,都没说清啊,就是因为hosts文件的问题.
......
看到"...access"之后谢天谢地吧.
后面的命令行里让你配置user.name神马的东西眼熟吧,和egit里面的类似设置是一个意思.你用文本编辑器直接编辑配置文件都行.
T_T
然后!!
然后,然后你终于可以在eclipse里面使用egit的push了,先commit再push,如果本地都没货你没东西push上去啊.弹出来账户密码神马的,github版本库的位置会给你个链接,比如"git@github.com:xxbirdman/xxProject.git",这个就是个ssh2的链接,填在第一行URI,后面会帮你填充.协议也不需要你动手.
重点来了:
嗯,童鞋,也许你很聪明,但是绝对记住,下面的账户密码位置虽然只写了个git,但是可别自作多情去填上github的帐号密码,不然你会很痛苦的,比如遇到神马"Exception caught during execution of ls-remote command"的狗血问题,原因很简单,github采用了纯rsa的验证方式,只要你的私钥配上了公钥,用公共账户git登录即可,绝对不需要画蛇添足的加上帐号密码,那样反而会出错,如果以后使用https的话,那就可以填上帐号密码了,另外记得选上记住密码,然后,跳转,再然后,建议一般人点击"Add All Branches Spec"吧,然后finish.这里是让你选择,你要同步本地版本库中的哪些branch上去的,每个branch都是个ref嘛,master也是一个branch嘛,HEAD,你懂的,一般人应该是都同步吧 - -
这里貌似和svn中默认常见整天念叨的branch,trunk,tag有点区别,其实也没有本质区别啦.你把trunk和tag也看成一种branch好了.
对了,小乌龟也有git版,叫TortoiseGit,你懂的.
最后,感谢很多人的分享,大家也可以参考以下链接:
github的帮助
http://help.github.com/
官方文档的中译
http://blog.csdn.net/xianqiang1/article/details/6944042
git中文魔法书//手册啦,有耐心翻翻
https://docs.google.com/View?
id=dfwthj68_675gz3bw8kj&pli=1#_1_41281264953870145_601701371_489039059728384
Eclipse上GIT插件EGIT使用手册,这一系列文章真心不错,再推荐一次
http://www.open-open.com/lib/view/open1328435802187.html
这是俺遇到苦逼问题时候看见的一位曾经同样倒霉过的大哥分享的内容 T_T
http://blog.csdn.net/ddlylly/article/details/7095809
这里有提到eclipse工具生成rsa密钥对的一瞥
http://freewind.me/blog/20111114/578.html
http://www.cnblogs.com/babykick/archive/2011/12/01/2271299.html
http://www.lixinyang.com/2011/05/windows-eclipse-github/
http://blog.sina.com.cn/s/blog_6b8d6ed60100zndn.html
本来只想随便写一点点,结果貌似又用了差不多两三个小时,写得有点乱,还不是很详细,命令行的使用也不熟悉,以后有空再补充吧,
多谢分享经验的各位.有错误以及不明白的地方请大家帮忙指出来.
=补=丁=
--V0.29
补充:这里我对于git本地代码库的理解认识不正确,找了两篇文章,介绍git的理念以及工作方式,供大家参考.说真的,真麻烦啊,我都想爆粗了,头痛ing - -#
http://www.cong(菊花)ci.com/item/git-and-github-services //菊花去掉
http://www.open-open.com/lib/view/open1328069733264.html
http://www.open-open.com/news/view/889e6
http://blog.csdn.net/yihui8/article/details/6445847
奇怪,cnblogs怎么把(cong(菊花)ci.com列为敏感词了?)
--