談談 Git

談談 Git

Git是一個開源的分佈式版本控制系統,用於敏捷高效地處理任何或小或大的項目。它是Linus Torvalds爲了幫助管理Linux內核開發而開發的一個開放源碼的版本控制軟件。Git與常用的版本控制工具CVS,Subversion等不同,它採用了分佈式版本庫的方式,不必服務器軟件支持。

1.集中式vs分佈式

CVS和SVN都是集中式的版本控制系統,而Git是分佈式控制系統,集中式和分佈式版本控制系統有什麼區別呢?

集中式版本控制系統:版本庫是集中存放在中央服務器的,而幹活的時候,用的都是自己的電腦,所以要先從中央服務器取得最新的版本,然後開始幹活,幹完活了,再把自己的活推送給中央服務器。

 集中式版本控制系統最大的毛病就是必須聯網才能工作,如果在局域網內還好,帶寬夠大,速度夠快,可如果在互聯網上,網速慢的話,可能提交一個10M的文件就需要5分鐘。

分佈式版本控制系統:沒有“中央服務器”,每個人的電腦上都是一個完整的版本庫,工作時就不需要聯網了。那麼多個人如何協作呢?比方說你在自己電腦上改了文件A,同事在他的電腦上也改了文件A,這時,你倆只需把各自的修改推送給對方,就可以互相看到對方的修改了。

和集中式版本控制系統相對 ,分佈式版本控制系統的安全性要高很多,因爲每個人電腦裏都有完整的版本庫,某一個人的電腦壞掉了不要緊,隨便從其他人那裏複製一個就可以了。而集中式版本控制系統的中央服務器要是出了問題,所有人都沒法幹活了。

2.創建版本庫

初始化一個Git倉庫,使用git init命令。

添加文件到Git倉庫,分兩步:

  • 使用命令git add <file>,注意,可反覆多次使用,添加多個文件;
  • 使用命令git commit -m <message>,完成。

注:

(1)git add 命令實際上就是把要提交的所有修改放到暫存區(Stage),然後,執行git commit 就可以一次性把暫存區的所有修改提交到分支。

(2)每次修改,如果不用git add 到暫存區,那就不會加入到commit中。

 

3.標籤管理

發佈一個版本時,我們通常先在版本庫中打一個標籤(tag),這樣,就唯一確定了打標籤時刻的版本。將來取某個標籤的版本,就是把那個打標籤的時刻的歷史版本取出來。所以,標籤也是版本庫的一個快照。

tag說白了就是一個讓人容易記住的有意義的名字,它跟某個commit(分支)綁在一起。

  • git tag <tagname>:用於新建一個標籤,默認爲HEAD,也可以指定一個commit id;
  • git tag -a <tagname> -m "blablabla...":指定標籤信息;
  • git tag:查看所有標籤。

4.其他命令

  • git diff:查看修改內容。
  • git status:查看當前倉庫的狀態。
  • git log:顯示從最近到最遠的提交日誌。
  • git checkout --file:丟棄工作區的修改。git checkout 其實是用版本庫裏的版本替換工作區的版本,無論工作區是修改還是刪除,都可以“一鍵還原”。
  • git reset HEAD <file>:不但改亂了工作區某個文件的內容,還添加到了暫存區,想丟棄修改,分兩步,第一步用該命令,第二步用git checkout --file。
  • git rm:用於刪除一個文件。
  • git branch -D <name>:強行刪除命令,用於丟棄一個沒有被合併過的分支。
  • git remote -v:查看遠程庫信息。
  • git push origin branch-name:從本地推送分支。如果推送失敗,先用git pull抓取遠程的新提交。
  • git branch --set-upstream branch-name origin/branch-name:建立本地分支和遠程分支的關聯。

5.GitHub

我們一直用GitHub作爲免費的遠程倉庫,如果是個人的開源項目,放到GitHub上是完全沒問題的。其實GitHub還是一個開源協作社區,通過GitHub,既可以讓別人參與你的開源項目,也可以參與別人的開源項目。在GitHub上,利用Git極其強大的克隆和分支功能,人們可以自由參與各種開源項目。

注:在參與一個開源項目時,一定要從自己的賬號下clone倉庫,這樣才能推送修改。如果從作者的倉庫地址克隆,由於沒有權限,將不能推送修改。

6.碼雲

使用GitHub時,國內的用戶經常遇到的問題是訪問速度太慢,有時還會出現無法連接的情況。

如果希望體驗Git飛一般的速度,可以使用國內的Git託管服務——碼雲(gitee.com)。

 

下面是Git Cheat Sheet:

https://gitee.com/liaoxuefeng/learn-java/raw/master/teach/git-cheatsheet.pdf

 

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