在Windows環境中使用版本管理工具Git

Git是一個分佈式的版本控制系統,最初由Linus Torvalds編寫,做者把他描述爲一個「傻瓜式的版本管理系統」,用做Linux內核代碼的管理。在推出後,Git在其它項目中也取得了很大成功,尤 其是在Ruby社區中。目前,包括Rubinius和Merb在內的不少知名項目都使用了Git。Git一樣能夠被諸如Capistrano和Vlad the Deployer這樣的部署工具所使用。使用GIT系統,不須要像SVN那樣搭建一臺SVN服務器來存放代碼庫。

1、爲何選擇Git

對於流行的軟件版本開源管理軟件,元老級的CVS、後來新秀的SVN,今天我在CHIP.CN Dowload中看到了一篇文章:《2008年度最佳開源軟件大獎》(http://download.chip.eu/cn /standardbeitrag_cn_3640079.html)。其中提到了GIT版本管理系統。

我很奇怪,爲何SVN沒有入圍並獲獎呢?當初,我在從CVS轉移到SVN時就曾經就SVN的一系列優點進行過一些粗淺的學習。SVN在版本庫的管理上較CVS有明顯的優點。那麼與SVN相比,GIT的優點又在哪裏呢?

通過強大的Google,我從網上找到了這些內容:

From 《Git入門教程》:(http://hi.baidu.com/eehuang/blog/item/37af8d54242d6351564e00b5.html)

1. 傻瓜都會的初始化,git init, git commit -a, 就完了。對於隨便寫兩行代碼就要放到代碼管理工具裏的人來講,再合適不過。也能夠拿git作備份系統,或者同步兩臺機器的文檔,都很方便。

2. 絕大部分操做在本地完成,不用和集中的代碼管理服務器交互,終於能夠隨時隨地大膽地check in代碼了。 只有最終完成的版本才須要向一箇中心的集中的代碼管理服務器提交。

3. 每次提交都會對全部代碼建立一個惟一的commit id。不像CVS那樣都是對單個文件分別進行版本的更改。因此你能夠一次性將某次提交前的全部代碼check出來,而不用考慮到底提交過那些文件。(其實SVN也能夠作到這點)

4. branch管理容易多了,不管是創建新的branch,仍是在branch之間切換都一條命令完成,不須要創建多餘的目錄。

5. branch之間merge時,不只代碼會merge在一塊兒,check in歷史也會保留,這點很是重要。

From gitHost.cn

一、更方便的 Merge

分佈式管理必然致使大量的 Branch 和 Merge 操做。所以分佈式版本控制系統都特別注意這方面。在傳統的 CVS 裏面製做 Branch 和 Merge 簡直就是噩夢,Subversion 做爲一個用於替代 CVS 的系統,專門改進了 Branch 操做。然而彷佛人們沒有注意到,Branch 是輕鬆了,但是 Merge 呢?若是不能很方便地 Merge 回來,作 Branch 仍然是噩夢。事實上,我就經歷過在開發團隊裏面因爲隊友操做不對而在 Merge 的時候把個人許多代碼都覆蓋掉了。當時正是使用的 subversion 。雖然源代碼仍然在歷史裏面,可是要去一個一個地找出被覆蓋掉的文件並恢復過來確實是一件很難忘的事情。

二、更方便的管理

傳統的版本控制系統使用中央倉庫,一些倉庫相關的管理就只能在倉庫上進行。賦予開發團隊每個人中央倉庫的管理權限是很是很差的。可是有時候確實會比較不方便的地方。

三、更健壯的系統

分佈式系統通常狀況下老是比單服務端的系統要健壯,由於但服務端一旦服務器掛掉了整個系統就不能運行了。然而分佈式系統一般不會由於一兩個節點而受到影響。

四、對網絡的依賴性更低

雖然如今網絡很是普及,可是並非隨時隨地都有高速網絡,甚至有時候根本沒有網絡能夠訪問。低速的網絡會讓人心情煩躁,有時候就呆呆地盯着屏幕上 的 commit 進度,什麼事情也幹不了。而沒有網絡鏈接更是致命的:你沒法 commit !這表示你進行任何改動之前都必須當心翼翼,不然你可能再也找不會你曾經寫的一些代碼了。

五、更少的「倉庫污染」

有時候你要作一個模塊,它不是太大,因此沒有必要爲它新建一個 branch ,可是它又不是那麼小,不可能一次提交就作好。因而便會提交一些不完整的代碼到倉庫,有時候會致使整個程序沒法運行,嚴重影響團隊裏其餘人的開發。大多數 人在這種狀況下的解決辦法都是寫完以後再提交。可是做爲習慣了版本控制的人來講,進行不計後果的大幅修改是常常的事情,到後來忽然發現本身先前的代碼沒有 提交,就後悔莫及了。若是是分佈式系統的話就不會存在這樣的問題,由於本地倉庫的修改不會影響到別人的倉庫。當你完成並測試之後,就能夠在郵件列表裏面 說:我已經把這個模塊作好了。而後感興趣的人就能夠從你這裏 pull 你的成果了。

雖然網上各類對Git的譽美之詞決不止於此,可是在Git的主站上,仍是儘量客觀的對Git和Subversion進行了一番比 較。(GitSvnComparsion :http://git.or.cz/gitwiki/GitSvnComparsion)。另外,Subversion目前經過SVK也已經提供了必定 程度上的源代碼庫分佈式的管理能力。可以實現源代碼的離線提交等功能。

2、在Windows上的使用Git

不得不說,Git是爲Linux而生的。(廢話,Git的最初建立人就是Linux的創始人啊)。在Linux環境下,要使用Git,與任何 Linux中的命令行工具沒有什麼區別。甚至在擊鍵數上還有明顯的優點。在Windows上要使用Git在目前看來只有兩種方法:使用Cygwin(一個 在Windows上運行的Linux環境)或者使用 msysgit(http://co de.google.com/p/ msysgit/)。Cygwin和 msysgit的使用方法相似。Cygwin具備大量Linux的功能,若是隻是想使用Git功能的話 msysgit仍是最簡單和快速的方法。下面的介紹將以 msysgit爲主進行。

爲了可以具有經過互聯網實現與別人協做開發的能力。對於項目,須要一個公開的源代碼託管服務。好在,如今已經有很多能夠供咱們選擇的。尤爲是 githost,更是一箇中文的源代碼託管服務提供方。從目前看來,在Githost上落戶的項目還不多,貌似是一個新近誕生的服務提供方。若是項目對服 務提供的穩定性有比較高的要求的話,仍是選擇較老的git源代碼託管服務比較好吧。

若是是在局域網內工做的小組,要使用Git作源代碼管理,那就更簡單了,你們安裝好本身的Git,並指定一我的負責對Git版本庫進行管理就行了。

(一)      GitHub簡介

GitHub是使用Ruby開發的,具備清爽的界面。GitHub提供免費的源代碼庫託管,同時也提供付費的託管服務。經過付費私有庫託管服務在財務上支持免費部分的持續運營。

GitHub提供了一套獨特的代碼庫管理界面功能,並提供項目Wiki的能力。

GitHub提供了一系列的指南,也能夠到這裏去看看:http://github.com/guides/home

(二)      在Windows系統上安裝Git

msysgit的老家下載安裝程序。http://co de.google.com/p/ msysgit/

選擇下載「** Full installer if you want to use official Git 1.5.6.1 **」對應的Git-1.5.6.1-preview20080701.exe。實際上,總能夠選擇最新的Git版本,以取得更好的使用效果。

安裝的過程很簡單,基本上可使用默認設置。只是在設置路徑的時候要注意一下,爲了不與Windows路徑致使的意外狀況,仍是使用「Use Git Bash On ly」比較安全。

Msysgit有命令行和圖形UI兩種使用方式。根據你的喜愛選擇吧。要說的是,圖形UI可能不能完成全部的工做,所以在某些狀況下(例如建立SSH Key),命令行仍是必不可少的。

Msysgit的Bash命令行對中文的支持很差。全部的中文字符都顯示成了「?」。所以,爲了不麻煩,最好避免使用中文的文件名、目錄名和用戶名等。不知道現階段Cygwin對中文的支持如何,隨後再試試看吧。 (三)      設定GitHub 要使用GitHub首先須要建立SSH Key。SSH將用來加密本機與遠端服務器之間的通訊。同時也是識別你對代碼所作的變動的方法。SSH Key可使用Git命令行來產生。若是你已經有一個SSH Key了,那麼在這裏也能夠直接使用。 要使用Git建立SSH Key 首先須要打開Git Bash 命令行。 輸入命令: ssh-keygen -C "username@email.com" -t rsa 說明:username@email.com 須要更換成你本身的Email地址 程序將提出一些問題,接受文件默認存放位置,當要求輸入pass phrase時,若是本機安全沒有問題,也能夠不輸入。找到當時制定的文件存儲位置中id_rsa.pub文件。這就是在GitHub上申請賬戶時須要使用的SSH公鑰文件。 在github.com的register中選擇Free account,在後續的界面中按照要求填入相應的內容便可完成註冊。很簡單的。 關於Git後續如何使用,仍是在另外的文檔中說明吧。 3、關於Git的一些聯結 一、  創建Git遠程服務器: 目前貌似尚未在Windows上創建Git服務器的。Linux在開源上仍是強大啊! l          Hosting Git repositories, The Easy (and Secure) Way http://scie.nti.st/2007/11/14/hosting-git-repositories-the-easy-and-secure-way l          Remote Git Repos on Ubuntu: The Right Way http://blog.drewolson.org/2008/05/remote-git-repos-on-ubuntu-right-way.html l         Installing Git on a server (Ubuntu or Debian) http://www.urbanpuddle.com/articles/2008/07/11/installing-git-on-a-server-ubuntu-or-debian 二、  基於Git的源代碼託管 l          中文的Git源代碼託管,基於gitorious構建:http://www.githost.cn/projects l          Gitorious Gitorious is another free hosting site with a custom web interface, supporting multiple repositories per project, local installations and with open source co de: http://gitorious.org/ l          repo.or.cz repo.or.cz is the oldest hosting site, accommodating many hundreds of projects, with open-sourced infrastructure and aimed at open source software. It provides full push features as well as simple mirroring mode and gitweb interface with various enhancements. :http://repo.or.cz/ l          GitHub GitHub provides both free hosting for smaller projects and paid options for private hosting and large-sized projects. It uses a custom web interface including a wiki hosting and puts emphasis on social networking of project developers:http://github.com/ 三、  關於Git的有用的聯結: l          Git的老家:http://git.or.cz/ l          Git User's Manual (for version 1.5.3 or newer) : http://www.kernel.org/pub/software/scm/git/docs/v1.6.0.2/user-manual.html l          Git - SVN Crash Course: http://git.or.cz/course/svn.html l          Everyday GIT With 20 Commands Or So: http://www.kernel.org/pub/software/scm/git/docs/everyday.html 4、參考文檔: l         Getting Started with Git and GitHub on Windows: http://kylecordes.com/2008/04/30/git-windows-go/ l         中文教程: http://www.bitsun.com/documents/gittutorcn.htm l         簡介: http://linuxtoy.org/archives/git.html l         英文教程:http://www.kernel.org/pub/software/scm/git/docs/tutorial.html l         GitHub:http://github.com
相關文章
相關標籤/搜索