亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

讓你不再糾結GitHub:Git起步

系統 2057 0

一、關于版本控制

版本控制 是一種記錄若干文件內容變化,以便將來查閱特定版本修訂情況的系統。 我們通常僅對保存著軟件源代碼的文本文件做版本控制,但實際上,你可以對任何類型的文件進行版本控制。

采用版本控制系統(VCS ),你就可以將某個文件回溯到之前的狀態,甚至將整個項目回退到某個時間點狀態;你可以比較文件變化的細節,查查最后是誰修改了哪個地方,從而導致出怪異的問題, 又是誰何時報告了謀個功能缺陷等

二、備份文件

本地版本控制器之前, 許多人喜歡用復制整個項目目錄的方式來保存不同的版本,或許還會改名加上備份時間以示卻別

好處: 簡單

壞處: 有時候會混淆所在的工作目錄,一旦弄錯文件丟了數據就無法撤銷恢復

三、本地版本控制器

本地版本控制器由來是, 為了解決備份文件的存在的問題,人們就開發了許多種本地版本控制系統,它大都采用某種簡單的數據庫來記錄文件的歷次更新差異。

典型代表 是一種叫做rcs,它的工作原理基本上就是保存并管理文件補丁(patch )。文件補丁是一種特定格式的文件,記錄著對應文件修訂前后的內容變化。所以,根據每次修訂后的補丁,rcs可以通過不斷打補丁,計算出各個版本的文件內容。

四、集中化的版本控制系統

接下來遇到一個新問題, 如何在不同系統上的開發者協同工作?于是,集中化的版本控制系統(Centrailized Version Control Systems,簡稱CVCS)應運而生

這類系統的代表 ,如CVS,Subversion以及Perforce等。都有一個單一的集中管理的服務器,保存所有文件的修訂版本,而協同工作的人們都通過客戶端連接到這臺服務器,取出最新的文件或者提交更新。

好處

相對于較老式的本地VCS來說,每個人都可以在一定程度上看到項目中其他人正在在做些什么

管理員也可以輕松掌控每個開發者的權限,并管理一個CVCS要遠比在各個客戶端維護本地數據庫來的輕松容易

壞處

中央服務器的單點故障,如果宕機一小時,則在這一小時內,誰都無法提交更新,也無法協同工作

中央服務器磁盤發生故障,碰巧備份不夠及時,還是會丟失數據的風險。最壞的情況是側地丟失整個項目的所有歷史更改記錄,而被客戶端提取出來的某些快照數據除外。

五、分布式版本控制系統

于是分布式版本控制系統(Distributed Version Control System,簡稱DVCS)面世了

在這類系統中典型的, 像Git、Mercurial、以及Darcs等,客戶端并不只提取最新版本的文件快照,而是把原始的代碼倉庫完整地鏡像下來。

好處

這么一來,任何一處協同工作用的服務器發生故障,事后可以用任何一個鏡像出來的本地倉庫恢復

更進一步,這類系統都可以指定和若干不同的遠端代碼倉庫進行交互,你就可以在同一個項目,分別和不同的小組的人相互協作

六、Git簡史

Linux內核開源項目有著眾廣的參與者,絕大多數的Linux內存維護工作都花在提交補丁和保存歸檔的繁雜事務上 (1991-2002年間)

到2002年 ,整個項目組開始啟用分布式版本控制系統BitKeeper來管理和維護代碼。

到了2005年, 開發BitKeeper的商業公司同Linux內核開源社區合作關系結束,他們收回了免費BitKepper的權利。 迫使Linux開源社區(特別是Linux的締造者Linus Torvalds)不得不吸取教訓,只有開發一套屬于自己的版本控制系統才不至于重蹈覆轍

從2005年以來 ,Git日臻成熟完善,在高度易用的同時,仍然保留著初期的設計的目標。極其適合管理大項目,有著令人難以置信的非線性分支管理系統,可以應付復制的項目開發需求。

七、Git基礎

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

大多數其他系統: 則只關心文件內容具體差異。這類系統(CVS、Subversion、Perforce、Bazaar等)每次記錄有哪些文件做了更新,以及都更新了哪些行的什么內容。

Git: 只關心文件數據的整體是否發生變化,并不保存這些前后的差異數據。實際上,Git更像是把變化的文件作快照后,記錄在一個微型的文件系統中。每次提交更新時,它會縱覽一遍所有文件的指紋信息并對文件作一快照,然后保存一個指向這次快照的索引。為了提高性能,若文件沒有變化,Git不會再次保存,而只是對上次保存的快照作一鏈接。

2.近乎所有操作都是本地執行

CVCS: 用CVCS的話,差不多所有操作都需要連接網絡

Git: 絕大多數操作都只需要訪問本地文件和資源,不同連網。因為它在本地磁盤上就保存著所有當前項目的歷史更新,所以處理起來速度飛快。

場景

如果要瀏覽項目的歷史,Git不同跑到外面的服務器上去取回數據,而直接從本地數據庫讀取后展示給你看

如果想看一個當前版本和一個月前的版本之間有何差異,Git會取出一個月前的快照和當前文件作一次差異運算,而不同請求遠程服務器來做這件事情。

如果CVCS的話,沒有網絡或者斷開VPN你就無法做任何事情。使用Git話,就算你在飛機或者火車上,都可以非常愉快地頻繁提交更新,等到有了網絡的時候在上傳到遠程倉庫。

3.時刻保持數據完整性

保存數據方式: 在保存到Git之前,所有數據都要進行內容的校驗和計算,并將此結果作為數據的唯一標示和索引。換句話說,不可能在你修改了文件或目錄之后,Git一無所知。如果文件在傳輸時變得不完整,或者磁盤損壞導致文件缺失,Git都能察覺。

算法原理: Git使用SHA-1算法計算數據校驗和,通過對文件的內容或目錄的結構計算出一個SHA-a哈希值,作為指紋字符串。該字符串由40個十六進制字符(0-9及a-f)組成,看起來是: 24b9da6552252987aa493b52f8696cd6d3b00373。

實際應用: Git的工作完全依賴于這類指紋字符串,所有保存在Git數據庫中的東西都是由此哈希值來做索引的,而不是靠文件名

4.多數操作僅添加數據

因為任何一種不可逆操作,比如刪除數據,都會使回退或重現歷史版本變得困難重重

在別的VCS中, 若還未提交更新,就有可能丟失或者混淆一些修改的內容

但在Git里, 一旦提交快照之后,就安全不用擔心丟失數據,特別養成定期推送到其它倉庫習慣的話

八、文件的三種狀態

對于任何一個文件,在Git內都只有三種狀態

已提交(committed ): 表示該文件已經被安全地保存在本地數據庫中

已修改(modified ): 表示修改了某個文件,但還沒有提交保存

已暫存(staged ): 標識把已修改的文件放在下次提交時要保存的清單中

九、文件流轉的三個工作區域

Git管理項目時,文件流轉的三個工作區域:Git的工作目錄、暫存區域、以及本地倉庫

Git目錄: 每項目都有一個Git目錄,它是Git用來保存元數據和對象數據庫的地方,該目錄非常重要,每次克隆鏡像倉庫的時候,實際拷貝的就是這個目錄里面的數據。

工作目錄: 從項目中取出某個版本的所有文件和目錄,用以開始后續的工作的目錄。這些文件實際上都是從Git目錄中的壓縮對象數據庫匯總提取出來的,接下來就可以在工作目錄中對這次文件進行編輯。

暫存區域: 只不過是個簡單文件,一般都放在Git目錄中。有時候人們會把這個文件叫做索引文件,不過標準的說話是叫暫存區域

我們可以從文件所處的位置判斷狀態

如果是Git目錄中保存著的特定版本文件,就屬于已提交狀態

如果作了修改并放入暫存區域,就屬于已暫存狀態

如果自上次取出后,做了修改單還沒有放到暫存區域,就是已修改狀態

十、Git工作流程

1.在工作目錄中修改某些文件。

2.對修改后的文件進行快照,然后保存到暫存區域。

3.提交更新,將保存在暫存區域的文件快照永久轉存到Git目錄中。

十一、Git安裝

在Windows中的安裝Git很輕松,只需要從 http://code.google.com/p/msysgit/ 下載.exe安裝文件,并運行

十二、初次運行Git前的配置

Git提供了一個叫做git config的工具(實際是git - config命令,只不過可以通過git加一個名字來呼叫此命令 ), 專門用來配置或讀取相應的工作環境。而正是這些環境變量,決定了Git在各個環節具體工作方式和行為

這些變量可以存放在一下三個不同的地方

1./ etc / gitconfi文件: 系統中對所有用戶都普遍適用的配置,若使用git config -- system讀寫的就是這個文件

2.~/. gitconfig文件: 用戶目錄下的配置文件只適用于該用戶,若使用git config -- global讀寫的就是這個文件

3.當前項目的git目錄的配置文件 (也就是工作目錄中的.git/ config文件 這里的配置僅僅對當前項目有效,每一個級別的配置都會覆蓋上層相同的配置,所以.git / config文件里的配置會覆蓋 / etc / gitconfig中的同名變量

在Windows系統上,Git會找尋用戶主目錄下的.gitconfig文件,主目錄即$Home變量指定的牡蠣,一般是 C:\Documents and Settings\$USER。此外,Git還會嘗試尋找/etc/gitconfig文件,只不多看當初Git裝在什么位置,此目錄作為根目錄來定位。

1.用戶信息

第一個要配置的是你的個人用戶名稱和電子郵件。這兩條配置非常重要,每次Git提交時都會引用者兩條信息,說明是誰提交了更新,所以會隨更新內容一起被永久納入歷史記錄:

        git config -global user.name "Peng CX" 
git config -global user.email xiang18610224709@live.com 
      

使用--global選項,那么更改的配置文件就位于你用戶主目錄下的那個,以后你所有的項目都會默認使用這里配置的用戶信息。如果在某個特定的項目中使用其他名字或郵件,只要去掉--golable宣子昂重新配置即可,新的設定保存到當前項目的.git/config文件里。

2.文本編輯器

接下來要設置的是默認使用的文本編輯器。Git需要輸入一些額外的消息的時候,會自動調用一個外部文本編輯器給你用。默認會使用操作系統指定的默認編輯器,一般可能是Vi或Vim。如果你有其它偏好,比如Emacs的話,可以重新設置:

        git config --global core.editor emacs 
      

3.差異分析工具

還有一個比較常用的是,在解決合并沖突使用哪種差異分析工具,比如要改用vimdiff的話:

        git config --global merge.tool vimdiff
        
        
      

Git可以理解kdiff3,tkdiff,meld,xxdiff,emerge,vimdiff,gvimdiff,ecmerge,和opendiff等合并工具的輸出信息。當然你也可以指定自己的開發工具。

4.查看配置信息

查看檢查已有的配置信息,可以使用:

        git config --list
        
        
      

有時會看到重復的變量名,那就說明它們來自不同的配置文件(比如/etc/gitconfig和~/.gitconfig),不過最終Git實際采用最后一個。

可以直接查閱謀個環境變量的設定,只要把特定的名字跟在后面即可,如下:

        git config user.name 
      

5.獲取幫助

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

        git help 
git --help 
      


讓你不再糾結GitHub:Git起步


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 伊人青青草视频 | 欧美日韩免费在线视频 | 亚洲日韩在线视频 | 天天干天天谢 | 免费看a网站 | 日日好| 99热在线观看 | 国产伊人自拍 | 亚洲免费区 | 97视频在线观看播放 | 国产免费自拍视频 | 中文字幕 二区 三区 搜查官 | 91正在播放极品白嫩在线观看 | 波多野结衣 一区二区 | 色噜噜亚洲精品中文字幕 | 中文日韩字幕一区在线观看 | 久久综合中文字幕一区二区三区 | 久久狠狠第一麻豆婷婷天天 | 99热成人精品国产免国语的 | 成 人 色综合 | 亚洲精品视频在线看 | 99热这里只有精品久久免费 | 日韩国产成人 | 色大18成网站www在线观看 | 日韩欧美中文字幕一区二区三区 | 997在线观看视频国产 | 国产精品国产精品国产专区不卡 | 亚洲日本aⅴ片在线观看香蕉 | 久久精品国产一区二区三区不卡 | 99精品久久99久久久久久 | 国产精品免费视频一区二区三区 | 亚洲欧美日本另类 | 国产成+人+亚洲+欧美+日韩 | 性一级录像| 国产成人一区二区三区免费观看 | 久久久久国产精品免费 | 簧片在线播放 | 国产亚洲精品在天天在线麻豆 | 亚洲在线免费 | 成人毛片18女人毛片 | 四虎影视在线播放 |