Git(一)git/github簡介

1、基本概念

git:是免費的、分佈式代碼管理系統,可以方便的進行版本的控制。

github:是一個開源的代碼託管網站,其是基於git的代碼託管網站。

git最初是Torvalds2005年創建的,爲了提升linux內核源碼的管控。後來在2008年,基於git的代碼託管網站Github上線,現在已是最好用的代碼託管網站之一,其託管的內容已不限於linux代碼。

2、關於gitsvn

在討論git的時候,不可繞過的就是討論分佈式和集中式代碼管理系統的區別,而集中式代碼管理系統的代表軟件就是svn。關於svngit之間的優劣,一直都有很多爭論,它們之間存在衆多區別:

A)git是分佈式的,而svn是集中式的。如下圖所示爲分佈式的一種典型情況:


分佈式的話,可以通過克隆服務器代碼而存在多個主版本的副本,每個副本都有完整的提交歷史,即使主服務器掛掉,也可以正常的進行代碼的本地提交和副本間的推送,不斷更新本地的代碼庫。

集中式的好處是將代碼放到一個主線版本庫裏更容易進行代碼的管理,但缺點就是,一旦主服務器掛掉,那麼所有人將不可能得到最新的代碼,也就無法進行代碼開發。

B)、內容完整性,便於回溯。Git會對作者的每一次更新加以詳細的描述,顯示出這次和上一次的差異。svn的每一次提交,都會將前一次的代碼進行覆蓋,並且不會顯示出具體的更新點,一旦提交,自己想回溯就沒有git那麼容易。這裏有一點,git不能識別二進制文件差異,所有不要企圖在git倉提交二進制文件、exceliso等等。

C)GIT分支和SVN的分支不同。其中最關鍵的一點,你可以看完整的代碼庫,如果沒有,可以用git clone個linux的完整代碼庫,然後用git branch -r命令看看,你會發現有幾十個甚至近百個分支,如果你只用svn的話,你一定完全無法想象。但這就是git分支的優勢,因爲git是基於差異來管理分支的,其分支的代價極小,再結合第一點,所以其切換分支也極爲方便和快捷。這一點上我認爲git是優於svn的,之所以我不說完爆,是因爲這一點要結合項目需求,你的項目不是android,不是linux,沒有大量分支並行開發、合併的需求,其實用svn也是可以的。關於git實現的代碼分支管理,只有你真正使用了,你就會知道它有多麼的強大

D)、代碼的修改簡單。當作者做了一次新的更新的時候,在git上可以通過修改上次提交達到,而svn必須每次重新提交。

E)git支持離線提交,因爲你第一次clone的代碼包含之前的完整的提交歷史,而離線提交是基於本地的歷史進行修改。一旦聯網後,它會將比較之前的歷史,並將最近的有修改的記錄提交上去。

此外,還有許多其他的一些區別,比如git是將內容按元數據方式存儲,而svn是按文件,還有就是svn有而git沒有一個全局的版本號等等之類。

從目前的使用來看,確實git的版本控制功能更加強大。很早之前沒接觸git的時候,覺得svn很好用,適合懶人,隨手右鍵單價提交,但確實在分支管理等存在很多問題。

3、如何在github上建立自己的代碼庫

Github的存在極大的方便了開發者的代碼託管,可以建立public或者private類型的版本庫repository,建立自己的代碼庫如下:

S1、首先建立自己的github賬戶;

S2、建立自己的版本庫repository,並記錄下該URL

 

S3、下載github客戶端軟件,支持maclinuxwindowswindows三種版本,此外,加載一個gitshell界面,如下:

 

打開GitHubGitHub負責顯示你自己的版本庫、歷史記錄等,而具體的代碼提交則通過Git Shell來進行。在GitHub可通過如下方式打開Git Shell進入自己的工作目錄:

 

S4、下載版本,採用git clone URL將建立的版本庫下載到本地:

 

S5、用cd myfisrtgit進入該版本文件夾,然後編輯自己的代碼。編輯自己的代碼時採用文本方式進行,不建議採用windows的記事本,因爲記事本的編碼方式與一般不同,會在頭加一些二進制碼作標記(每個文件開頭添加了0xefbbbf(十六進制)的字符),建議採用notepad++方式進行編碼。

S6、提交代碼:

 

S7、在網上更新該版本

 

可以看到,當登入到版本庫去查看的時候,可以看到我們的helloword.txt已經提交至對版本庫裏了,並且後面有相應的說明“This is a test”以及時間點。此外,git還有其他操作,比如分支版本的管理、遠程倉庫、用戶認證等,後續在實際應用中還要在進行軟件開發時再進行研究,也可參考網上資料。

3、OpenStack的代碼下載

路徑:OpenStack官網->wiki->keystone->source code,然後複製該URL,在git中用git clone URL即可將該ceilometer的社區代碼下載到本地。此外,從github上將代碼下載到本地,也可以在頁面上採用fork操作進行。

 

可以看到,已經將社區的keystone代碼檢索到本地了。當然,這只是clone階段,並沒有向服務器推送代碼的權利。

git的優缺點、社區代碼fetchpush等等還是要在實際中自己去學習使用,這僅僅只是提出一些共性的通用點,後續再慢慢進行更新。

歡迎評論!

本文地址:http://blog.csdn.net/zhaole524/article/details/52566002


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章