【轉載】Git的快速入門及實戰演練
Git快速入門
本部分我會先通過故事的形式講解下Git的誕生,及其強大的分散式版本控制的能力。然後再給大家介紹一下我們在實際的專案開發過程中經常用到的git命令,讓大家能夠快速入門Git。當然我不會給你介紹八百年也不會用一次的命令,感覺很高階的命令,畢竟實用才是硬道理。還有不要指望通過這篇文章你就能成為Git專家,這篇文章只會讓你在實際專案中能夠迎刃有餘的使用Git
關於Git你不得不知的故事
(沒錯,這部分參考自廖雪峰大神的文章,因為有必要讓大夥瞭解這些)很多人都知道,Linus在1991年建立了開源的Linux,從此,Linux系統不斷髮展,已經成為最大的伺服器系統軟體了。
Linus雖然建立了Linux,但Linux的壯大是靠全世界熱心的志願者參與的,這麼多人在世界各地為Linux編寫程式碼,那Linux的程式碼是如何管理的呢?
事實是,在2002年以前,世界各地的志願者把原始碼檔案通過diff的方式發給Linus,然後由Linus本人通過手工方式合併程式碼!
你也許會想,為什麼Linus不把Linux程式碼放到版本控制系統裡呢?不是有CVS、SVN這些免費的版本控制系統嗎?因為Linus堅定地反對CVS和SVN,這些集中式的版本控制系統不但速度慢,而且必須聯網才能使用。有一些商用的版本控制系統,雖然比CVS、SVN好用,但那是付費的,和Linux的開源精神不符。
不過,到了2002年,Linux系統已經發展了十年了,程式碼庫之大讓Linus很難繼續通過手工方式管理了,社群的弟兄們也對這種方式表達了強烈不滿,於是Linus選擇了一個商業的版本控制系統BitKeeper,BitKeeper的東家BitMover公司出於人道主義精神,授權Linux社群免費使用這個版本控制系統。
安定團結的大好局面在2005年就被打破了,原因是Linux社群牛人聚集,不免沾染了一些梁山好漢的江湖習氣。開發Samba的Andrew試圖破解BitKeeper的協議(這麼幹的其實也不只他一個),被BitMover公司發現了(監控工作做得不錯!),於是BitMover公司怒了,要收回Linux社群的免費使用權。
Linus可以向BitMover公司道個歉,保證以後嚴格管教弟兄們,嗯,這是不可能的。實際情況是這樣的:
Linus花了兩週時間自己用C寫了一個分散式版本控制系統,這就是Git!一個月之內,Linux系統的原始碼已經由Git管理了!牛是怎麼定義的呢?大家可以體會一下。
Git迅速成為最流行的分散式版本控制系統,尤其是2008年,GitHub網站上線了,它為開源專案免費提供Git儲存,無數開源專案開始遷移至GitHub,包括jQuery,PHP,Ruby等等。如今GitHub更是被微軟收購,ASP.NET Core的的全套原始碼以及.NET Core的原始碼也都是在GitHub上開源。
歷史就是這麼偶然,如果不是當年BitMover公司威脅Linux社群,可能現在我們就沒有免費而超級好用的Git了。
Git的優勢
看了Git的的故事是不是心潮澎湃呢?但是你又在想了Git到底有什麼優勢能夠讓那麼多的大名鼎鼎的專案都是用Git進行程式碼管理呢?別急,這部分就為你解答。
-
適合分散式開發,強調個體,可以離線工作。 分散式版本控制系統根本沒有“中央伺服器”,每個人的電腦上都是一個完整的版本庫,這樣,你工作的時候,就不需要聯網了,因為版本庫就在你自己的電腦上。既然每個人電腦上都有一個完整的版本庫,那多個人如何協作呢?比方說你在自己電腦上改了檔案A,你的同事也在他的電腦上改了檔案A,這時,你們倆之間只需把各自的修改推送給對方,就可以互相看到對方的修改了。
-
安全性要高很多,因為每個人電腦裡都有完整的版本庫,某一個人的電腦壞掉了不要緊,隨便從其他人那裡複製一個就可以了。而集中式版本控制系統的中央伺服器要是出了問題,所有人都沒法幹活了。因此公共伺服器壓力和資料量都不會太大。
-
速度快、靈活。 強大的分支管理能力,無論建立、切換和刪除分支,Git在1秒鐘之內就能完成!無論你的版本庫是1個檔案還是1萬個檔案,想想svn是不是頭疼啊。
-
暫存區概念,具體的點選這裡檢視
這個優缺點Git的優勢想的頭疼,說太多就感覺枯燥了,只有你真正使用了才能體會到!話不多說,讓我們快速入門Git吧。
Git安裝
-
Windows系統的安裝很簡單,軟體下載好之後一步一步的安裝就行了,至於Linux和MacOS你可以點這裡檢視官網的安裝教程.
-
安裝完成之後,需要進行相關的配置,在命令列輸入以下命令進行全域性的配置:
$ git config --global user.name "yilezhu" $ git config --global user.email "[email protected]"
注:因為Git是分散式版本控制系統,所以,每臺機器都必須自報家門:你的名字和Email地址(上面雙引號裡面的內容)。你也許會擔心,如果有人故意冒充別人怎麼辦?這個不必擔心,首先我們相信大家都是善良無知的群眾,其次,真的有冒充的也是有辦法可查的。
注意
git config
命令的--global
引數,用了這個引數,表示你這臺機器上所有的Git倉庫都會使用這個配置,當然也可以對某個倉庫指定不同的使用者名稱和Email地址。 -
點選這裡,下載並安裝TortoiseGit圖形化工具,安裝後可以通過滑鼠進行Git命令的操作。如下所示:
Git結合Github進行實戰演練
Git本地倉庫與GitHub遠端倉庫關聯並獲取最新的程式碼
這部分我們就進行Git的實戰吧,正好前面幾篇文章已經為大家演示了幾個例子,那麼我們就把前面幾個例子為例,使用Git把他們託管到GitHub上面吧。
-
假設你已經有了GitHub賬號,沒有的話自己去註冊。點選這裡登入GitHub,
-
自報家門,配置你是誰(如果你在上面的Git安裝)裡面已經按照下面進行了配置,這裡就無需再配置。首先滑鼠右鍵按照下圖所示開啟Git Bash 然後按照下圖所示進行配置:
-
生成ssh key 在git bash上面輸入
ssh-keygen -t rsa -C "你的郵箱"
它會有三次等待你輸入,直接回車即可。下面的圖是因為我已經生成了,詢問我是否覆蓋,我輸入y選擇了是重新生成了。 -
將生成的ssh key拷貝到剪貼簿,執行
clip < ~/.ssh/id_rsa.pub
(或者到上圖提示的路徑裡去開啟檔案並複製): -
開啟github並按照如下圖所示開啟Settings
-
點選左邊的
SSH and GPG keys
然後在右邊點選New SSH key
將ssh key貼上到右邊的Key裡面。Title隨便命名即可。這時候GitHub會給你傳送一封郵件
-
執行
ssh -T [email protected]
測試結果如下說明GitHub配置成功。 -
GitHub上建立一個新的專案,專案名稱為
Czar.Cms
,這個倉庫將作為我們後面CMS系統的GitHub上的遠端倉庫- 首先是在右上角“+”進入建立介面
- 接著按照如下所示輸入專案名稱,然後點選
Create repository
就建立好了。
這裡我們有選擇以Readme初始化專案。所以生成後的結構如下所示:
- 首先是在右上角“+”進入建立介面
-
下面我們就在本地初始化一個倉庫,然後與GitHub的遠端倉庫關聯起來吧。
-
我們在我們的工作資料夾中,開啟Git Bash,然後輸入如下命令
git init
來初始化一個本地倉庫。 -
然後輸入
git remote
檢視下遠端倉庫,正常的話應該有0個,現在就讓我們新增下我們剛才建立的GitHub上的遠端倉庫吧.然後再看下遠端倉庫列表,發現已經有一個了,名字為github
注:要新增一個新的遠端倉庫,可以指定一個簡單的名字,以便將來引用,執行 git remote add [shortname] [url] 。上面我們對應的shortname即為github,這個你可以隨意指定只要好記就行。感謝@寶寶董 給與的提示!
![1543067824895](https://img2018.cnblogs.com/blog/1377250/201811/1377250-20181124225630691-1261659851.png)
```c#
git remote add github github遠端倉庫的地址
```
-
然後輸入
git pull github master
就會從剛才我們配置的遠端倉庫拉取master分支的程式碼。如下所示: -
獲取之後然後看下我麼的專案資料夾,如下所示:已經從GitHub上獲取到了最新的程式碼:
把上篇文章的原始碼上傳到GitHub的Sample02分支上
-
在我們的本地倉庫資料夾開啟git bash 然後輸入
git checkout -b Sample02
命令建立並切換到Sample02
這個分支,然後把我們上篇文章的程式碼拷貝到這個資料夾,如下圖所示 -
輸入
git status
檢視當前倉庫有哪些檔案做了修改,如下圖所示,紅色部分表示已經發生了修改 -
輸入
git add Sample02/
把Sample02資料夾下面所有的已經發生了修改的檔案都放進'暫存區' 然後輸入git status
檢視一下當前的狀態,都變成了綠色,說明Sample02資料夾下面的修改內容都加入了暫存區 -
接著輸入
git commit -m '註釋內容'
命令把我們暫存區的程式碼提交到我們的本地倉庫 -
然後輸入
git status
檢視一下,發現所有的修改都已經提交成功了。 -
輸入如下命令
git push github Sample02
把我們的原生代碼提交到遠端倉庫的'Sample02分支'吧注意,這裡時提交到Github上的Sample02分支上,而我們的GitHub上沒有這個分支,所以會自動幫我們建立這個分支。
-
這裡第三篇的事例程式碼就上傳到Github上了。大家可以去檢視下,順便給個Star哦,因為後面的CMS的程式碼我也會放到這個倉庫,只不過是不同的分支而已。
-
下面就讓我們切換回master分支,並結束這個部分吧。輸入
git checkout master
GitHub原始碼地址
這個時候可以上GitHub的地址了,後面所有的事例程式碼都會放到這個分支上,所以大夥可以先去看一下上一篇的事例程式碼
https://github.com/yilezhu/Czar.Cms
總結
本文從Git的誕生開始說起,然後給大家講了Git的優勢。接著我們通過一個GitHub的實戰,手把手的在GitHub上新建了一個遠端倉庫並跟我本地的程式碼進行管理,並且把我的上篇文章的事例程式碼給上傳到了GitHub上。希望對大家使用Git有所幫助。下面再次羅列常用的Git命令
- git init :初始化本地倉庫
- git remote :檢視關聯的遠端倉庫連線
- git remote add github github遠端倉庫地址 :建立一個遠端倉庫連線
- git pull github master :從github命名的遠端倉庫拉取master分支內容
- git checkout -b Sample02 :建立並切換到Sample02這個分支上
- git branch :檢視當前的所有分支
- git add Sample02/ :把Sample02資料夾下面的所有修改檔案新增到暫存區
- git commit -m "註釋" :把暫存區所有修改提交到本地倉庫,並給本體提交寫一個註釋方便檢視日誌
- git log --graph :檢視修改日誌
- git push github Sample02 :把當前倉庫中得當前分支的內容推送到github這個遠端倉庫的Sample02分支上,如果分支不存在則自動建立
- git merge --no-ff -m "註釋" Sample02 :在當前分支合併
Sample02
這個分支的修改到當前分支,並給這次合併添加註釋