久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

Git詳解之一:Git起步

 SamBookshelf 2014-03-14

起步

本章介紹開(kāi)始使用 git 前的相關(guān)知識(shí)。我們會(huì)先了解一些版本控制工具的歷史背景,,然后試著讓 Git 在你的系統(tǒng)上跑起來(lái),,直到最后配置好,可以正常開(kāi)始開(kāi)發(fā)工作,。讀完本章,,你就會(huì)明白為什么 Git 會(huì)如此流行,為什么你應(yīng)該立即開(kāi)始使用它,。(查看Git詳解系列的全部文章

1.1 關(guān)于版本控制

什么是版本控制,?我真的需要嗎?版本控制是一種記錄若干文件內(nèi)容變化,,以便將來(lái)查閱特定版本修訂情況的系統(tǒng),。在本書(shū)所展示的例子中,我們僅對(duì)保存著軟件源代碼的文本文件作版本控制管理,,但實(shí)際上,,你可以對(duì)任何類(lèi)型的文件進(jìn)行版本控制,。

如果你是位圖形或網(wǎng)頁(yè)設(shè)計(jì)師,,可能會(huì)需要保存某一幅圖片或頁(yè)面布局文件的所有修訂版本(這或許是你非常渴望擁有的功能),。采用版本控制系統(tǒng) (VCS)是個(gè)明智的選擇,。有了它你就可以將某個(gè)文件回溯到之前的狀態(tài),甚至將整個(gè)項(xiàng)目都回退到過(guò)去某個(gè)時(shí)間點(diǎn)的狀態(tài),。你可以比較文件的變化細(xì)節(jié),,查出最 后是誰(shuí)修改了哪個(gè)地方,從而導(dǎo)致出現(xiàn)怪異問(wèn)題,,又是誰(shuí)在何時(shí)報(bào)告了某個(gè)功能缺陷等等,。使用版本控制系統(tǒng)通常還意味著,就算你亂來(lái)一氣把整個(gè)項(xiàng)目中的文件改 的改刪的刪,你也照樣可以輕松恢復(fù)到原先的樣子,。但額外增加的工作量卻微乎其微,。

本地版本控制系統(tǒng)

許多人習(xí)慣用復(fù)制整個(gè)項(xiàng)目目錄的方式來(lái)保存不同的版本,或許還會(huì)改名加上備份時(shí)間以示區(qū)別,。這么做唯一的好處就是簡(jiǎn)單,。不過(guò)壞處也不少:有時(shí)候會(huì)混淆所在的工作目錄,一旦弄錯(cuò)文件丟了數(shù)據(jù)就沒(méi)法撤銷(xiāo)恢復(fù),。

為了解決這個(gè)問(wèn)題,,人們很久以前就開(kāi)發(fā)了許多種本地版本控制系統(tǒng),大多都是采用某種簡(jiǎn)單的數(shù)據(jù)庫(kù)來(lái)記錄文件的歷次更新差異(見(jiàn)圖 1-1),。

Git詳解之一:Git起步

圖 1-1. 本地版本控制系統(tǒng)

其中最流行的一種叫做 rcs,,現(xiàn)今許多計(jì)算機(jī)系統(tǒng)上都還看得到它的蹤影。甚至在流行的 Mac OS X 系統(tǒng)上安裝了開(kāi)發(fā)者工具包之后,,也可以使用 rcs 命令,。它的工作原理基本上就是保存并管理文件補(bǔ)丁(patch),。文件補(bǔ)丁是一種特定格式的文本文件,,記錄著對(duì)應(yīng)文件修訂前后的內(nèi)容變化。所以,,根據(jù)每次 修訂后的補(bǔ)丁,,rcs 可以通過(guò)不斷打補(bǔ)丁,計(jì)算出各個(gè)版本的文件內(nèi)容,。

集中化的版本控制系統(tǒng)

接下來(lái)人們又遇到一個(gè)問(wèn)題,,如何讓在不同系統(tǒng)上的開(kāi)發(fā)者協(xié)同工作?于是,,集中化的版本控制系統(tǒng)( Centralized Version Control Systems,,簡(jiǎn)稱(chēng) CVCS )應(yīng)運(yùn)而生。這類(lèi)系統(tǒng),,諸如 CVS,,Subversion 以及 Perforce 等,都有一個(gè)單一的集中管理的服務(wù)器,,保存所有文件的修訂版本,,而協(xié)同工作的人們都通過(guò)客戶(hù)端連到這臺(tái)服務(wù)器,取出最新的文件或者提交更新,。多年以來(lái),,這 已成為版本控制系統(tǒng)的標(biāo)準(zhǔn)做法(見(jiàn)圖 1-2)。

Git詳解之一:Git起步

圖 1-2. 集中化的版本控制系統(tǒng)

這種做法帶來(lái)了許多好處,,特別是相較于老式的本地 VCS 來(lái)說(shuō)?,F(xiàn)在,,每個(gè)人都可以在一定程度上看到項(xiàng)目中的其他人正在做些什么。而管理員也可以輕松掌控每個(gè)開(kāi)發(fā)者的權(quán)限,,并且管理一個(gè) CVCS 要遠(yuǎn)比在各個(gè)客戶(hù)端上維護(hù)本地?cái)?shù)據(jù)庫(kù)來(lái)得輕松容易,。

事分兩面,有好有壞,。這么做最顯而易見(jiàn)的缺點(diǎn)是中央服務(wù)器的單點(diǎn)故障,。如果宕機(jī)一小時(shí),那么在這一小時(shí)內(nèi),,誰(shuí)都無(wú)法提交更新,,也就無(wú)法協(xié)同工作。要 是中央服務(wù)器的磁盤(pán)發(fā)生故障,,碰巧沒(méi)做備份,,或者備份不夠及時(shí),就還是會(huì)有丟失數(shù)據(jù)的風(fēng)險(xiǎn),。最壞的情況是徹底丟失整個(gè)項(xiàng)目的所有歷史更改記錄,,而被客戶(hù)端 提取出來(lái)的某些快照數(shù)據(jù)除外,但這樣的話(huà)依然是個(gè)問(wèn)題,,你不能保證所有的數(shù)據(jù)都已經(jīng)有人事先完整提取出來(lái)過(guò),。本地版本控制系統(tǒng)也存在類(lèi)似問(wèn)題,只要整個(gè)項(xiàng) 目的歷史記錄被保存在單一位置,,就有丟失所有歷史更新記錄的風(fēng)險(xiǎn),。

分布式版本控制系統(tǒng)

于是分布式版本控制系統(tǒng)( Distributed Version Control System,簡(jiǎn)稱(chēng) DVCS )面世了,。在這類(lèi)系統(tǒng)中,,像 Git,Mercurial,,Bazaar 以及 Darcs 等,,客戶(hù)端并不只提取最新版本的文件快照,而是把原始的代碼倉(cāng)庫(kù)完整地鏡像下來(lái),。這么一來(lái),,任何一處協(xié)同工作用的服務(wù)器發(fā)生故障,事后都可以用任何一個(gè)鏡 像出來(lái)的本地倉(cāng)庫(kù)恢復(fù),。因?yàn)槊恳淮蔚奶崛〔僮?,?shí)際上都是一次對(duì)代碼倉(cāng)庫(kù)的完整備份(見(jiàn)圖 1-3),。

Git詳解之一:Git起步
圖 1-3. 分布式版本控制系統(tǒng)

更進(jìn)一步,,許多這類(lèi)系統(tǒng)都可以指定和若干不同的遠(yuǎn)端代碼倉(cāng)庫(kù)進(jìn)行交互。籍此,,你就可以在同一個(gè)項(xiàng)目中,,分別和不同工作小組的人相互協(xié)作,。你可以根據(jù)需要設(shè)定不同的協(xié)作流程,比如層次模型式的工作流,,而這在以前的集中式系統(tǒng)中是無(wú)法實(shí)現(xiàn)的,。

 

1.2 Git 簡(jiǎn)史

同生活中的許多偉大事件一樣,Git 誕生于一個(gè)極富紛爭(zhēng)大舉創(chuàng)新的年代,。Linux 內(nèi)核開(kāi)源項(xiàng)目有著為數(shù)眾廣的參與者,。絕大多數(shù)的 Linux 內(nèi)核維護(hù)工作都花在了提交補(bǔ)丁和保存歸檔的繁瑣事務(wù)上(1991-2002年間)。到 2002 年,,整個(gè)項(xiàng)目組開(kāi)始啟用分布式版本控制系統(tǒng) BitKeeper 來(lái)管理和維護(hù)代碼,。

到了 2005 年,開(kāi)發(fā) BitKeeper 的商業(yè)公司同 Linux 內(nèi)核開(kāi)源社區(qū)的合作關(guān)系結(jié)束,,他們收回了免費(fèi)使用 BitKeeper 的權(quán)力,。這就迫使 Linux 開(kāi)源社區(qū)(特別是 Linux 的締造者 Linus Torvalds )不得不吸取教訓(xùn),只有開(kāi)發(fā)一套屬于自己的版本控制系統(tǒng)才不至于重蹈覆轍,。他們對(duì)新的系統(tǒng)制訂了若干目標(biāo):

* 速度 * 簡(jiǎn)單的設(shè)計(jì) * 對(duì)非線性開(kāi)發(fā)模式的強(qiáng)力支持(允許上千個(gè)并行開(kāi)發(fā)的分支) * 完全分布式 * 有能力高效管理類(lèi)似 Linux 內(nèi)核一樣的超大規(guī)模項(xiàng)目(速度和數(shù)據(jù)量)

自誕生于 2005 年以來(lái),,Git 日臻成熟完善,在高度易用的同時(shí),,仍然保留著初期設(shè)定的目標(biāo),。它的速度飛快,極其適合管理大項(xiàng)目,,它還有著令人難以置信的非線性分支管理系統(tǒng)(見(jiàn)第三章),,可以應(yīng)付各種復(fù)雜的項(xiàng)目開(kāi)發(fā)需求。

1.3 Git 基礎(chǔ)

那么,,簡(jiǎn)單地說(shuō),,Git 究竟是怎樣的一個(gè)系統(tǒng)呢?請(qǐng)注意,,接下來(lái)的內(nèi)容非常重要,,若是理解了 Git 的思想和基本工作原理,用起來(lái)就會(huì)知其所以然,,游刃有余,。在開(kāi)始學(xué)習(xí) Git 的時(shí)候,請(qǐng)不要嘗試把各種概念和其他版本控制系統(tǒng)(諸如 Subversion 和 Perforce 等)相比擬,,否則容易混淆每個(gè)操作的實(shí)際意義,。Git 在保存和處理各種信息的時(shí)候,雖然操作起來(lái)的命令形式非常相近,,但它與其他版本控制系統(tǒng)的做法頗為不同,。理解這些差異將有助于你準(zhǔn)確地使用 Git 提供的各種工具。

直接記錄快照,,而非差異比較

Git 和其他版本控制系統(tǒng)的主要差別在于,,Git 只關(guān)心文件數(shù)據(jù)的整體是否發(fā)生變化,,而大多數(shù)其他系統(tǒng)則只關(guān)心文件內(nèi)容的具體差異。這類(lèi)系統(tǒng) (CVS,,Subversion,,Perforce,Bazaar 等等)每次記錄有哪些文件作了更新,,以及都更新了哪些行的什么內(nèi)容,,請(qǐng)看圖 1-4。

Git詳解之一:Git起步
圖 1-4. 其他系統(tǒng)在每個(gè)版本中記錄著各個(gè)文件的具體差異

Git 并不保存這些前后變化的差異數(shù)據(jù),。實(shí)際上,,Git 更像是把變化的文件作快照后,記錄在一個(gè)微型的文件系統(tǒng)中,。每次提交更新時(shí),,它會(huì)縱覽一遍所有文件的指紋信息并對(duì)文件作一快照,然后保存一個(gè)指向這次快照 的索引,。為提高性能,,若文件沒(méi)有變化,Git 不會(huì)再次保存,,而只對(duì)上次保存的快照作一鏈接,。Git 的工作方式就像圖 1-5 所示。

Git詳解之一:Git起步
圖 1-5. Git 保存每次更新時(shí)的文件快照

這是 Git 同其他系統(tǒng)的重要區(qū)別,。它完全顛覆了傳統(tǒng)版本控制的套路,,并對(duì)各個(gè)環(huán)節(jié)的實(shí)現(xiàn)方式作了新的設(shè)計(jì)。Git 更像是個(gè)小型的文件系統(tǒng),,但它同時(shí)還提供了許多以此為基礎(chǔ)的超強(qiáng)工具,,而不只是一個(gè)簡(jiǎn)單的 VCS。稍后在第三章討論 Git 分支管理的時(shí)候,,我們會(huì)再看看這樣的設(shè)計(jì)究竟會(huì)帶來(lái)哪些好處,。

近乎所有操作都是本地執(zhí)行

在 Git 中的絕大多數(shù)操作都只需要訪問(wèn)本地文件和資源,不用連網(wǎng),。但如果用 CVCS 的話(huà),,差不多所有操作都需要連接網(wǎng)絡(luò)。因?yàn)?Git 在本地磁盤(pán)上就保存著所有當(dāng)前項(xiàng)目的歷史更新,,所以處理起來(lái)速度飛快,。

舉個(gè)例子,如果要瀏覽項(xiàng)目的歷史更新摘要,,Git 不用跑到外面的服務(wù)器上去取數(shù)據(jù)回來(lái),,而直接從本地?cái)?shù)據(jù)庫(kù)讀取后展示給你看。所以任何時(shí)候你都可以馬上翻閱,,無(wú)需等待,。如果想要看當(dāng)前版本的文件和一個(gè)月 前的版本之間有何差異,Git 會(huì)取出一個(gè)月前的快照和當(dāng)前文件作一次差異運(yùn)算,,而不用請(qǐng)求遠(yuǎn)程服務(wù)器來(lái)做這件事,,或是把老版本的文件拉到本地來(lái)作比較。

用 CVCS 的話(huà),,沒(méi)有網(wǎng)絡(luò)或者斷開(kāi) VPN 你就無(wú)法做任何事情,。但用 Git 的話(huà),就算你在飛機(jī)或者火車(chē)上,,都可以非常愉快地頻繁提交更新,,等到了有網(wǎng)絡(luò)的時(shí)候再上傳到遠(yuǎn)程倉(cāng)庫(kù)。同樣,,在回家的路上,,不用連接 VPN 你也可以繼續(xù)工作。換作其他版本控制系統(tǒng),,這么做幾乎不可能,,抑或非常麻煩。比如 Perforce,,如果不連到服務(wù)器,,幾乎什么都做不了(譯注:默認(rèn)無(wú)法發(fā)出命令p4 edit file 開(kāi)始編輯文件,因?yàn)?Perforce 需要聯(lián)網(wǎng)通知系統(tǒng)聲明該文件正在被誰(shuí)修訂,。但實(shí)際上手工修改文件權(quán)限可以繞過(guò)這個(gè)限制,,只是完成后還是無(wú)法提交更新。),;如果是 Subversion 或 CVS,,雖然可以編輯文件,但無(wú)法提交更新,,因?yàn)閿?shù)據(jù)庫(kù)在網(wǎng)絡(luò)上,。看上去好像這些都不是什么大問(wèn)題,,但實(shí)際體驗(yàn)過(guò)之后,,你就會(huì)驚喜地發(fā)現(xiàn),這其實(shí)是會(huì)帶來(lái)很大不同的,。

時(shí)刻保持?jǐn)?shù)據(jù)完整性

在保存到 Git 之前,,所有數(shù)據(jù)都要進(jìn)行內(nèi)容的校驗(yàn)和(checksum)計(jì)算,并將此結(jié)果作為數(shù)據(jù)的唯一標(biāo)識(shí)和索引,。換句話(huà)說(shuō),,不可能在你修改了文件或目錄之后,Git 一無(wú)所知,。這項(xiàng)特性作為 Git 的設(shè)計(jì)哲學(xué),,建在整體架構(gòu)的最底層,。所以如果文件在傳輸時(shí)變得不完整,或者磁盤(pán)損壞導(dǎo)致文件數(shù)據(jù)缺失,,Git 都能立即察覺(jué),。

Git 使用 SHA-1 算法計(jì)算數(shù)據(jù)的校驗(yàn)和,通過(guò)對(duì)文件的內(nèi)容或目錄的結(jié)構(gòu)計(jì)算出一個(gè) SHA-1 哈希值,,作為指紋字符串,。該字串由 40 個(gè)十六進(jìn)制字符(0-9 及 a-f)組成,,看起來(lái)就像是:

1
24b9da6552252987aa493b52f8696cd6d3b00373

Git 的工作完全依賴(lài)于這類(lèi)指紋字串,,所以你會(huì)經(jīng)常看到這樣的哈希值,。實(shí)際上,,所有保存在 Git 數(shù)據(jù)庫(kù)中的東西都是用此哈希值來(lái)作索引的,而不是靠文件名,。

多數(shù)操作僅添加數(shù)據(jù)

常用的 Git 操作大多僅僅是把數(shù)據(jù)添加到數(shù)據(jù)庫(kù),。因?yàn)槿魏我环N不可逆的操作,,比如刪除數(shù)據(jù),都會(huì)使回退或重現(xiàn)歷史版本變得困難重重。在別的 VCS 中,,若還未提交更新,,就有可能丟失或者混淆一些修改的內(nèi)容,,但在 Git 里,,一旦提交快照之后就完全不用擔(dān)心丟失數(shù)據(jù),特別是養(yǎng)成定期推送到其他倉(cāng)庫(kù)的習(xí)慣的話(huà),。

這種高可靠性令我們的開(kāi)發(fā)工作安心不少,,盡管去做各種試驗(yàn)性的嘗試好了,再怎樣也不會(huì)弄丟數(shù)據(jù),。至于 Git 內(nèi)部究竟是如何保存和恢復(fù)數(shù)據(jù)的,,我們會(huì)在第九章討論 Git 內(nèi)部原理時(shí)再作詳述。

文件的三種狀態(tài)

好,,現(xiàn)在請(qǐng)注意,,接下來(lái)要講的概念非常重要。對(duì)于任何一個(gè)文件,,在 Git 內(nèi)都只有三種狀態(tài):已提交(committed),,已修改(modified)和已暫存(staged)。已提交表示該文件已經(jīng)被安全地保存在本地?cái)?shù)據(jù)庫(kù) 中了,;已修改表示修改了某個(gè)文件,,但還沒(méi)有提交保存;已暫存表示把已修改的文件放在下次提交時(shí)要保存的清單中。

由此我們看到 Git 管理項(xiàng)目時(shí),,文件流轉(zhuǎn)的三個(gè)工作區(qū)域:Git 的工作目錄,,暫存區(qū)域,以及本地倉(cāng)庫(kù),。

Git詳解之一:Git起步

圖 1-6. 工作目錄,,暫存區(qū)域,以及本地倉(cāng)庫(kù)

每個(gè)項(xiàng)目都有一個(gè) Git 目錄(譯注:如果 git clone 出來(lái)的話(huà),,就是其中 .git 的目錄,;如果git clone --bare 的話(huà),,新建的目錄本身就是 Git 目錄,。),它是 Git 用來(lái)保存元數(shù)據(jù)和對(duì)象數(shù)據(jù)庫(kù)的地方,。該目錄非常重要,,每次克隆鏡像倉(cāng)庫(kù)的時(shí)候,實(shí)際拷貝的就是這個(gè)目錄里面的數(shù)據(jù),。

從項(xiàng)目中取出某個(gè)版本的所有文件和目錄,,用以開(kāi)始后續(xù)工作的叫做工作目錄。這些文件實(shí)際上都是從 Git 目錄中的壓縮對(duì)象數(shù)據(jù)庫(kù)中提取出來(lái)的,,接下來(lái)就可以在工作目錄中對(duì)這些文件進(jìn)行編輯,。

所謂的暫存區(qū)域只不過(guò)是個(gè)簡(jiǎn)單的文件,一般都放在 Git 目錄中,。有時(shí)候人們會(huì)把這個(gè)文件叫做索引文件,,不過(guò)標(biāo)準(zhǔn)說(shuō)法還是叫暫存區(qū)域。

基本的 Git 工作流程如下:

1. 在工作目錄中修改某些文件,。 2. 對(duì)修改后的文件進(jìn)行快照,,然后保存到暫存區(qū)域。 3. 提交更新,,將保存在暫存區(qū)域的文件快照永久轉(zhuǎn)儲(chǔ)到 Git 目錄中,。

所以,我們可以從文件所處的位置來(lái)判斷狀態(tài):如果是 Git 目錄中保存著的特定版本文件,,就屬于已提交狀態(tài),;如果作了修改并已放入暫存區(qū)域,就屬于已暫存狀態(tài),;如果自上次取出后,,作了修改但還沒(méi)有放到暫存區(qū)域,就 是已修改狀態(tài),。到第二章的時(shí)候,,我們會(huì)進(jìn)一步了解其中細(xì)節(jié),并學(xué)會(huì)如何根據(jù)文件狀態(tài)實(shí)施后續(xù)操作,以及怎樣跳過(guò)暫存直接提交,。

 

1.4 安裝 Git

是時(shí)候動(dòng)手嘗試下 Git 了,,不過(guò)得先安裝好它。有許多種安裝方式,,主要分為兩種,,一種是通過(guò)編譯源代碼來(lái)安裝;另一種是使用為特定平臺(tái)預(yù)編譯好的安裝包,。

從源代碼安裝

若是條件允許,,從源代碼安裝有很多好處,至少可以安裝最新的版本,。Git 的每個(gè)版本都在不斷嘗試改進(jìn)用戶(hù)體驗(yàn),,所以能通過(guò)源代碼自己編譯安裝最新版本就再好不過(guò)了。有些 Linux 版本自帶的安裝包更新起來(lái)并不及時(shí),,所以除非你在用最新的 distro 或者 backports,,那么從源代碼安裝其實(shí)該算是最佳選擇。

Git 的工作需要調(diào)用 curl,,zlib,,openssl,expat,,libiconv 等庫(kù)的代碼,,所以需要先安裝這些依賴(lài)工具。在有 yum 的系統(tǒng)上(比如 Fedora)或者有 apt-get 的系統(tǒng)上(比如 Debian 體系),,可以用下面的命令安裝:

1
2
3
4
5
$ yum install curl-devel expat-devel gettext-devel \
  openssl-devel zlib-devel
$ apt-get install libcurl4-gnutls-dev libexpat1-dev gettext \
  libz-dev libssl-dev

之后,,從下面的 Git 官方站點(diǎn)下載最新版本源代碼:

1
http://git-scm.com/download

然后編譯并安裝:

1
2
3
4
$ tar -zxf git-1.7.2.2.tar.gz
$ cd git-1.7.2.2
$ make prefix=/usr/local all
$ sudo make prefix=/usr/local install

現(xiàn)在已經(jīng)可以用 git 命令了,,用 git 把 Git 項(xiàng)目倉(cāng)庫(kù)克隆到本地,,以便日后隨時(shí)更新:

1
$ git clone git://git.kernel.org/pub/scm/git/git.git

在 Linux 上安裝

如果要在 Linux 上安裝預(yù)編譯好的 Git 二進(jìn)制安裝包,可以直接用系統(tǒng)提供的包管理工具,。在 Fedora 上用 yum 安裝:

1
$ yum install git-core

在 Ubuntu 這類(lèi) Debian 體系的系統(tǒng)上,,可以用 apt-get 安裝:

1
$ apt-get install git-core

在 Mac 上安裝

在 Mac 上安裝 Git 有兩種方式。最容易的當(dāng)屬使用圖形化的 Git 安裝工具,,界面如圖 1-7,,下載地址在:

http://code.google.com/p/git-osx-installer

Git詳解之一:Git起步

圖 1-7. Git OS X 安裝工具

另一種是通過(guò) MacPorts (http://www.) 安裝。如果已經(jīng)裝好了 MacPorts,,用下面的命令安裝 Git:

1
$ sudo port install git-core +svn +doc +bash_completion +gitweb

這種方式就不需要再自己安裝依賴(lài)庫(kù)了,,Macports 會(huì)幫你搞定這些麻煩事。一般上面列出的安裝選項(xiàng)已經(jīng)夠用,,要是你想用 Git 連接 Subversion 的代碼倉(cāng)庫(kù),,還可以加上 +svn 選項(xiàng),,具體將在第八章作介紹,。(譯注:還有一種是使用 homebrew(https://GitHub.com/mxcl/homebrew):brew install git,。)

在 Windows 上安裝

在 Windows 上安裝 Git 同樣輕松,,有個(gè)叫做 msysGit 的項(xiàng)目提供了安裝包,可以到 Google Code 的頁(yè)面上下載 exe 安裝文件并運(yùn)行:

1
http://code.google.com/p/msysgit

完成安裝之后,,就可以使用命令行的 git 工具(已經(jīng)自帶了 ssh 客戶(hù)端)了,另外還有一個(gè)圖形界面的 Git 項(xiàng)目管理工具,。

 

 

1.5 初次運(yùn)行 Git 前的配置

一般在新的系統(tǒng)上,我們都需要先配置下自己的 Git 工作環(huán)境,。配置工作只需一次,,以后升級(jí)時(shí)還會(huì)沿用現(xiàn)在的配置,。當(dāng)然,,如果需要,你隨時(shí)可以用相同的命令修改已有的配置,。

Git 提供了一個(gè)叫做 git config 的工具(譯注:實(shí)際是 git-config 命令,只不過(guò)可以通過(guò) git 加一個(gè)名字來(lái)呼叫此命令,。),,專(zhuān)門(mén)用來(lái)配置或讀取相應(yīng)的工作環(huán)境變量。而正是由這些環(huán)境變量,,決定了 Git 在各個(gè)環(huán)節(jié)的具體工作方式和行為,。這些變量可以存放在以下三個(gè)不同的地方:

●/etc/gitconfig 文件:系統(tǒng)中對(duì)所有用戶(hù)都普遍適用的配置。若使用 git config 時(shí)用--system 選項(xiàng),,讀寫(xiě)的就是這個(gè)文件,。

●~/.gitconfig 文件:用戶(hù)目錄下的配置文件只適用于該用戶(hù)。若使用 git config 時(shí)用--global 選項(xiàng),,讀寫(xiě)的就是這個(gè)文件,。

●當(dāng)前項(xiàng)目的 git 目錄中的配置文件(也就是工作目錄中的 .git/config 文件):這里的配置僅僅針對(duì)當(dāng)前項(xiàng)目有效。每一個(gè)級(jí)別的配置都會(huì)覆蓋上層的相同配置,,所以.git/config 里的配置會(huì)覆蓋/etc/gitconfig 中的同名變量,。

在 Windows 系統(tǒng)上,Git 會(huì)找尋用戶(hù)主目錄下的 .gitconfig 文件,。主目錄即 $HOME 變量指定的目錄,,一般都是C:\Documents and Settings\$USER。此外,,Git 還會(huì)嘗試找尋/etc/gitconfig 文件,,只不過(guò)看當(dāng)初 Git 裝在什么目錄,就以此作為根目錄來(lái)定位,。

用戶(hù)信息

第一個(gè)要配置的是你個(gè)人的用戶(hù)名稱(chēng)和電子郵件地址,。這兩條配置很重要,每次 Git 提交時(shí)都會(huì)引用這兩條信息,,說(shuō)明是誰(shuí)提交了更新,,所以會(huì)隨更新內(nèi)容一起被永久納入歷史記錄:

1
2
$ git config --global user.name "John Doe"
$ git config --global user.email johndoe@ example.com

如果用了 --global 選項(xiàng),那么更改的配置文件就是位于你用戶(hù)主目錄下的那個(gè),,以后你所有的項(xiàng)目都會(huì)默認(rèn)使用這里配置的用戶(hù)信息,。如果要在某個(gè)特定的項(xiàng)目中使用其他名字或者電郵,只要去掉--global 選項(xiàng)重新配置即可,,新的設(shè)定保存在當(dāng)前項(xiàng)目的.git/config 文件里,。

文本編輯器

接下來(lái)要設(shè)置的是默認(rèn)使用的文本編輯器。Git 需要你輸入一些額外消息的時(shí)候,,會(huì)自動(dòng)調(diào)用一個(gè)外部文本編輯器給你用,。默認(rèn)會(huì)使用操作系統(tǒng)指定的默認(rèn)編輯器,一般可能會(huì)是 Vi 或者 Vim,。如果你有其他偏好,,比如 Emacs 的話(huà),可以重新設(shè)置:

1
$ git config --global core.editor emacs

差異分析工具

還有一個(gè)比較常用的是,,在解決合并沖突時(shí)使用哪種差異分析工具,。比如要改用 vimdiff 的話(huà):

1
$ git config --global merge.tool vimdiff

Git 可以理解 kdiff3,tkdiff,,meld,,xxdiff,emerge,,vimdiff,,gvimdiff,ecmerge,,和 opendiff 等合并工具的輸出信息,。當(dāng)然,你也可以指定使用自己開(kāi)發(fā)的工具,,具體怎么做可以參閱第七章,。

查看配置信息

要檢查已有的配置信息,可以使用 git config --list 命令:

1
2
3
4
5
6
7
8
$ git config --list
user.name=Scott Chacon
user.email=schacon@ gmail.com
color.status=auto
color.branch=auto
color.interactive=auto
color.diff=auto
...

有時(shí)候會(huì)看到重復(fù)的變量名,,那就說(shuō)明它們來(lái)自不同的配置文件(比如 /etc/gitconfig 和 ~/.gitconfig),,不過(guò)最終 Git 實(shí)際采用的是最后一個(gè),。

也可以直接查閱某個(gè)環(huán)境變量的設(shè)定,只要把特定的名字跟在后面即可,,像這樣:

1
$ git config user.name Scott Chacon

1.6 獲取幫助

想了解 Git 的各式工具該怎么用,,可以閱讀它們的使用幫助,方法有三:

1
2
3
4
5
6
$ git help
       $ git
        --help
$ man git-

比如,,要學(xué)習(xí) config 命令可以怎么用,,運(yùn)行:

1
$ git help config

我們隨時(shí)都可以瀏覽這些幫助信息而無(wú)需連網(wǎng)。不過(guò),,要是你覺(jué)得還不夠,,可以到 Frenode IRC 服務(wù)器(irc.freenode.net)上的 #git 或 #github 頻道尋求他人幫助。這兩個(gè)頻道上總有著上百號(hào)人,,大多都有著豐富的 git 知識(shí),,并且樂(lè)于助人。

1.7 小結(jié)

至此,,你該對(duì) Git 有了點(diǎn)基本認(rèn)識(shí),,包括它和以前你使用的 CVCS 之間的差別。現(xiàn)在,,在你的系統(tǒng)上應(yīng)該已經(jīng)裝好了 Git,,設(shè)置了自己的名字和電郵。接下來(lái)讓我們繼續(xù)學(xué)習(xí) Git 的基礎(chǔ)知識(shí),。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,,所有內(nèi)容均由用戶(hù)發(fā)布,,不代表本站觀點(diǎn),。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,,謹(jǐn)防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào),。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶(hù) 評(píng)論公約

    類(lèi)似文章 更多