在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.翻牆的同志們可能知道一些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列為敏感詞了?)
--
