.NET Corek中Git的常用命令及實戰(zhàn)演練
寫在前面
上篇文章我?guī)е蠹彝ㄟ^分析了一遍ASP.NET Core的源碼了解了它的啟動過程,然后又帶著大家熟悉了一遍配置文件的加載方式,最后引出了依賴注入以及控制反轉的概念!如果大家把前面幾張都理解了,那么你也就入了ASP.NET Core的大門了。但是我們還需要一個版本控制工具來提高我們的編碼效率。因此這篇文章我將帶著大家了解下Git這個版本控制工具以及為什么選擇它。
下面我們將通過故事的形式從Git的歷史談起,并講述Git的強大之處。然后通過實戰(zhàn)演練教你如何在Github以及碼云上托管我們的代碼并進行代碼的版本控制。
Git快速入門
本部分我會先通過故事的形式講解下Git的誕生,及其強大的分布式版本控制的能力。然后再給大家介紹一下我們在實際的項目開發(fā)過程中經常用到的git命令,讓大家能夠快速入門Git。當然我不會給你介紹八百年也不會用一次的命令,感覺很高級的命令,畢竟實用才是硬道理。還有不要指望通過這篇文章你就能成為Git專家,這篇文章只會讓你在實際項目中能夠迎刃有余的使用Git
關于Git你不得不知的故事
(沒錯,這部分參考自廖雪峰大神的文章,因為有必要讓大伙了解這些)很多人都知道,Linus在1991年創(chuàng)建了開源的Linux,從此,Linux系統不斷發(fā)展,已經成為最大的服務器系統軟件了。
Linus雖然創(chuàng)建了Linux,但Linux的壯大是靠全世界熱心的志愿者參與的,這么多人在世界各地為Linux編寫代碼,那Linux的代碼是如何管理的呢?
事實是,在2002年以前,世界各地的志愿者把源代碼文件通過diff的方式發(fā)給Linus,然后由Linus本人通過手工方式合并代碼!
你也許會想,為什么Linus不把Linux代碼放到版本控制系統里呢?不是有CVS、SVN這些免費的版本控制系統嗎?因為Linus堅定地反對CVS和SVN,這些集中式的版本控制系統不但速度慢,而且必須聯網才能使用。有一些商用的版本控制系統,雖然比CVS、SVN好用,但那是付費的,和Linux的開源精神不符。
不過,到了2002年,Linux系統已經發(fā)展了十年了,代碼庫之大讓Linus很難繼續(xù)通過手工方式管理了,社區(qū)的弟兄們也對這種方式表達了強烈不滿,于是Linus選擇了一個商業(yè)的版本控制系統BitKeeper,BitKeeper的東家BitMover公司出于人道主義精神,授權Linux社區(qū)免費使用這個版本控制系統。
安定團結的大好局面在2005年就被打破了,原因是Linux社區(qū)牛人聚集,不免沾染了一些梁山好漢的江湖習氣。開發(fā)Samba的Andrew試圖破解BitKeeper的協議(這么干的其實也不只他一個),被BitMover公司發(fā)現了(監(jiān)控工作做得不錯!),于是BitMover公司怒了,要收回Linux社區(qū)的免費使用權。
Linus可以向BitMover公司道個歉,保證以后嚴格管教弟兄們,嗯,這是不可能的。實際情況是這樣的:
Linus花了兩周時間自己用C寫了一個分布式版本控制系統,這就是Git!一個月之內,Linux系統的源碼已經由Git管理了!牛是怎么定義的呢?大家可以體會一下。
Git迅速成為最流行的分布式版本控制系統,尤其是2008年,GitHub網站上線了,它為開源項目免費提供Git存儲,無數開源項目開始遷移至GitHub,包括jQuery,PHP,Ruby等等。如今GitHub更是被微軟收購,ASP.NET Core的的全套源碼以及.NET Core的源碼也都是在GitHub上開源。
歷史就是這么偶然,如果不是當年BitMover公司威脅Linux社區(qū),可能現在我們就沒有免費而超級好用的Git了。
Git的優(yōu)勢
看了Git的的故事是不是心潮澎湃呢?但是你又在想了Git到底有什么優(yōu)勢能夠讓那么多的大名鼎鼎的項目都是用Git進行代碼管理呢?別急,這部分就為你解答。
- 適合分布式開發(fā),強調個體,可以離線工作。 分布式版本控制系統根本沒有“中央服務器”,每個人的電腦上都是一個完整的版本庫,這樣,你工作的時候,就不需要聯網了,因為版本庫就在你自己的電腦上。既然每個人電腦上都有一個完整的版本庫,那多個人如何協作呢?比方說你在自己電腦上改了文件A,你的同事也在他的電腦上改了文件A,這時,你們倆之間只需把各自的修改推送給對方,就可以互相看到對方的修改了。
- 安全性要高很多,因為每個人電腦里都有完整的版本庫,某一個人的電腦壞掉了不要緊,隨便從其他人那里復制一個就可以了。而集中式版本控制系統的中央服務器要是出了問題,所有人都沒法干活了。因此公共服務器壓力和數據量都不會太大。
- 速度快、靈活。 強大的分支管理能力,無論創(chuàng)建、切換和刪除分支,Git在1秒鐘之內就能完成!無論你的版本庫是1個文件還是1萬個文件,想想svn是不是頭疼啊。
- 暫存區(qū)概念。
這個優(yōu)缺點Git的優(yōu)勢想的頭疼,說太多就感覺枯燥了,只有你真正使用了才能體會到!話不多說,讓我們快速入門Git吧。
Git安裝
你可以點擊這里 到官網進行下載,可能官網下載比較忙,所以你可以點擊這里 到腳本之家進行下載.
Windows系統的安裝很簡單,軟件下載好之后一步一步的安裝就行了,至于Linux和MacOS你可以點這里 查看官網的安裝教程.
安裝完成之后,需要進行相關的配置,在命令行輸入以下命令進行全局的配置:
$ git config --global user.name "yilezhu" $ git config --global user.email 1015657114@qq.com
注:因為Git是分布式版本控制系統,所以,每臺機器都必須自報家門:你的名字和Email地址(上面雙引號里面的內容)。你也許會擔心,如果有人故意冒充別人怎么辦?這個不必擔心,首先我們相信大家都是善良無知的群眾,其次,真的有冒充的也是有辦法可查的。
注意
git config
命令的--global
參數,用了這個參數,表示你這臺機器上所有的Git倉庫都會使用這個配置,當然也可以對某個倉庫指定不同的用戶名和Email地址。
點擊這里 ,下載并安裝TortoiseGit圖形化工具,安裝后可以通過鼠標進行Git命令的操作。如下所示:
Git結合Github進行實戰(zhàn)演練
Git本地倉庫與GitHub遠程倉庫關聯并獲取最新的代碼
這部分我們就進行Git的實戰(zhàn)吧,正好前面幾篇文章已經為大家演示了幾個例子,那么我們就把前面幾個例子為例,使用Git把他們托管到GitHub上面吧。
1.假設你已經有了GitHub賬號,沒有的話自己去注冊。點擊這里 登錄GitHub,
2.自報家門,配置你是誰(如果你在上面的Git安裝)里面已經按照下面進行了配置,這里就無需再配置。首先鼠標右鍵按照下圖所示打開Git Bash 然后按照下圖所示進行配置:
3.生成ssh key 在git bash上面輸入ssh-keygen -t rsa -C "你的郵箱"
它會有三次等待你輸入,直接回車即可。下面的圖是因為我已經生成了,詢問我是否覆蓋,我輸入y選擇了是重新生成了。
4.將生成的ssh key拷貝到剪貼板,執(zhí)行 clip < ~/.ssh/id_rsa.pub
(或者到上圖提示的路徑里去打開文件并復制):
5.打開github并按照如下圖所示打開Settings
6.點擊左邊的SSH and GPG keys
然后在右邊點擊 New SSH key
將ssh key粘貼到右邊的Key里面。Title隨便命名即可。這時候GitHub會給你發(fā)送一封郵件
7.執(zhí)行 ssh -T git@github.com
測試結果如下說明GitHub配置成功。
8.GitHub上創(chuàng)建一個新的項目,項目名稱為Czar.Cms
,這個倉庫將作為我們后面CMS系統的GitHub上的遠程倉庫
•首先是在右上角“+”進入創(chuàng)建界面
•接著按照如下所示輸入項目名稱,然后點擊Create repository
就創(chuàng)建好了。
這里我們有選擇以Readme初始化項目。所以生成后的結構如下所示:
9.下面我們就在本地初始化一個倉庫,然后與GitHub的遠程倉庫關聯起來吧。
10.我們在我們的工作文件夾中,打開Git Bash,然后輸入如下命令git init
來初始化一個本地倉庫。
11.然后輸入git remote
查看下遠程倉庫,正常的話應該有0個,現在就讓我們添加下我們剛才建立的GitHub上的遠程倉庫吧.然后再看下遠程倉庫列表,發(fā)現已經有一個了,名字為github
注:要添加一個新的遠程倉庫,可以指定一個簡單的名字,以便將來引用,運行 git remote add [shortname] [url] 。上面我們對應的shortname即為github,這個你可以隨意指定只要好記就行。感謝@寶寶董 給與的提示!
git remote add github github遠程倉庫的地址
12.然后輸入git pull github master
就會從剛才我們配置的遠程倉庫拉取master分支的代碼。如下所示:
13.獲取之后然后看下我么的項目文件夾,如下所示:已經從GitHub上獲取到了最新的代碼:
把上篇文章的源碼上傳到GitHub的Sample02分支上
1.在我們的本地倉庫文件夾打開git bash 然后輸入git checkout -b Sample02
命令創(chuàng)建并切換到Sample02
這個分支,然后把我們上篇文章的代碼拷貝到這個文件夾,如下圖所示
2.輸入git status
查看當前倉庫有哪些文件做了修改,如下圖所示,紅色部分表示已經發(fā)生了修改
3.輸入git add Sample02/
把Sample02文件夾下面所有的已經發(fā)生了修改的文件都放進'暫存區(qū)' 然后輸入git status
查看一下當前的狀態(tài),都變成了綠色,說明Sample02文件夾下面的修改內容都加入了暫存區(qū)
4.接著輸入git commit -m '注釋內容'
命令把我們暫存區(qū)的代碼提交到我們的本地倉庫
5.然后輸入git status
查看一下,發(fā)現所有的修改都已經提交成功了。
6.輸入如下命令git push github Sample02
把我們的本地代碼提交到遠程倉庫的'Sample02分支'吧
注意,這里時提交到Github上的Sample02分支上,而我們的GitHub上沒有這個分支,所以會自動幫我們創(chuàng)建這個分支。
7.這里第三篇的事例代碼就上傳到Github上了。大家可以去查看下,順便給個Star哦,因為后面的CMS的代碼我也會放到這個倉庫,只不過是不同的分支而已。
下面就讓我們切換回master分支,并結束這個部分吧。輸入git checkout master
GitHub源碼地址
這個時候可以上GitHub的地址了,后面所有的事例代碼都會放到這個分支上。
總結
本文從Git的誕生開始說起,然后給大家講了Git的優(yōu)勢。接著我們通過一個GitHub的實戰(zhàn),手把手的在GitHub上新建了一個遠程倉庫并跟我本地的代碼進行管理,并且把我的上篇文章的事例代碼給上傳到了GitHub上。希望對大家使用Git有所幫助。下面再次羅列常用的Git命令
- git init :初始化本地倉庫
- git remote :查看關聯的遠程倉庫連接
- git remote add github github遠程倉庫地址 :創(chuàng)建一個遠程倉庫連接
- git pull github master :從github命名的遠程倉庫拉取master分支內容
- git checkout -b Sample02 :創(chuàng)建并切換到Sample02這個分支上
- git branch :查看當前的所有分支
- git add Sample02/ :把Sample02文件夾下面的所有修改文件添加到暫存區(qū)
- git commit -m "注釋" :把暫存區(qū)所有修改提交到本地倉庫,并給本體提交寫一個注釋方便查看日志
- git log --graph :查看修改日志
- git push github Sample02 :把當前倉庫中得當前分支的內容推送到github這個遠程倉庫的Sample02分支上,如果分支不存在則自動創(chuàng)建
- git merge --no-ff -m "注釋" Sample02 :在當前分支合并
Sample02
這個分支的修改到當前分支,并給這次合并添加注釋
好了,今天就給大家介紹到這,主要是給大家介紹平時實際項目中常用的命令,對于不常用的命令沒有介紹,因為畢竟是實戰(zhàn),所以以實用為主。下篇文章我會給大家介紹一下Dapper的使用(玩數據庫了)來為后面我們的CMS系列課程打下基礎,畢竟要照顧一些新手朋友。
- Git rebase命令使用實戰(zhàn)
- Windows 版本Git命令行的使用詳解
- Git pull(拉取)及push(上傳)相關命令介紹
- 解決idea中Terminal終端無法執(zhí)行GIT命令+Terminal 中文亂碼問題
- C#/.NET使用git命令行來操作git倉庫的方法示例
- Git命令的簡單整理大全
- 分享Git常用7大技巧和命令
- 一些你必須要熟練掌握的git命令
- Git代碼提交流程及git命令匯總(基礎篇)
- Git的簡單理解及基礎操作命令詳解
- Git 常用命令清單(整理且詳細)
- 日常收集整理的Git常用命令
- Git 命令行教程及實例教程(附github注冊)
- git checkout 命令使用詳解
相關文章
asp.net Application_AcquireRequestState事件,導致Ajax客戶端不能加載
項目中使用Application_AcquireRequestState事件,來做一些用戶信息的驗證工作.2010-03-03一文帶你了解.Net基于Threading.Mutex實現互斥鎖
互斥鎖是一個互斥的同步對象,意味著同一時間有且僅有一個線程可以獲取它。這篇文章主要介紹了一文帶你了解.Net基于Threading.Mutex實現互斥鎖,感興趣的可以了解一下2021-06-06Asp.net開發(fā)之webform圖片水印和圖片驗證碼的實現方法
這篇文章主要介紹了Asp.net開發(fā)之webform圖片水印和圖片驗證碼的實現方法,實現思路分為前后臺代碼和效果展示,非常不錯具有參考借鑒價值,需要的朋友可以參考下2016-10-10