.NET Core實戰項目之CMS 第四章 入門篇-Git的快速入門及實戰演練

来源:https://www.cnblogs.com/yilezhu/archive/2018/11/24/10014027.html
-Advertisement-
Play Games

 寫在前面 上篇文章我帶著大家通過分析了一遍ASP.NET Core的源碼瞭解了它的啟動過程,然後又帶著大家熟悉了一遍配置文件的載入方式,最後引出了依賴註入以及控制反轉的概念!如果大家把前面幾張都理解了,那麼你也就入了ASP.NET Core的大門了。但是我們還需要一個版本控制工具來提高我們的編碼 ...


寫在前面

上篇文章我帶著大家通過分析了一遍ASP.NET Core的源碼瞭解了它的啟動過程,然後又帶著大家熟悉了一遍配置文件的載入方式,最後引出了依賴註入以及控制反轉的概念!如果大家把前面幾張都理解了,那麼你也就入了ASP.NET Core的大門了。但是我們還需要一個版本控制工具來提高我們的編碼效率。因此這篇文章我將帶著大家瞭解下Git這個版本控制工具以及為什麼選擇它。
下麵我們將通過故事的形式從Git的歷史談起,並講述Git的強大之處。然後通過實戰演練教你如何在Github以及碼雲上托管我們的代碼併進行代碼的版本控制。
這裡還想說一句,這篇文章本來昨天就能發出來的,奈何出現了一點狀況,所以今天才來寫,為了不浪費大家的時間我會在文章的最後再來講述原因,這裡給大家說聲抱歉了。
本篇文章已經收入.NET Core實戰項目之CMS 第一章 入門篇-開篇及總體規劃 有興趣的朋友可以加入.NET Core項目實戰交流群637326624 進行交流。

作者:依樂祝
原本地址:https://www.cnblogs.com/yilezhu/p/10014027.html

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進行代碼管理呢?別急,這部分就為你解答。

  1. 適合分散式開發,強調個體,可以離線工作。 分散式版本控制系統根本沒有“中央伺服器”,每個人的電腦上都是一個完整的版本庫,這樣,你工作的時候,就不需要聯網了,因為版本庫就在你自己的電腦上。既然每個人電腦上都有一個完整的版本庫,那多個人如何協作呢?比方說你在自己電腦上改了文件A,你的同事也在他的電腦上改了文件A,這時,你們倆之間只需把各自的修改推送給對方,就可以互相看到對方的修改了。

  2. 安全性要高很多,因為每個人電腦里都有完整的版本庫,某一個人的電腦壞掉了不要緊,隨便從其他人那裡複製一個就可以了。而集中式版本控制系統的中央伺服器要是出了問題,所有人都沒法幹活了。因此公共伺服器壓力和數據量都不會太大。

  3. 速度快、靈活。 強大的分支管理能力,無論創建、切換和刪除分支,Git在1秒鐘之內就能完成!無論你的版本庫是1個文件還是1萬個文件,想想svn是不是頭疼啊。

  4. 暫存區概念,具體的點擊這裡 查看

這個優缺點Git的優勢想的頭疼,說太多就感覺枯燥了,只有你真正使用了才能體會到!話不多說,讓我們快速入門Git吧。

Git安裝

  1. 你可以點擊這裡 到官網進行下載,可能官網下載比較忙,所以你可以點擊這裡 到騰訊軟體中心進行下載.

  2. Windows系統的安裝很簡單,軟體下載好之後一步一步的安裝就行了,至於Linux和MacOS你可以點這裡 查看官網的安裝教程.

  3. 安裝完成之後,需要進行相關的配置,在命令行輸入以下命令進行全局的配置:

    $ git config --global user.name "yilezhu"
    $ git config --global user.email "[email protected]"

    註:因為Git是分散式版本控制系統,所以,每台機器都必須自報家門:你的名字和Email地址(上面雙引號裡面的內容)。你也許會擔心,如果有人故意冒充別人怎麼辦?這個不必擔心,首先我們相信大家都是善良無知的群眾,其次,真的有冒充的也是有辦法可查的。

    註意git config命令的--global參數,用了這個參數,表示你這台機器上所有的Git倉庫都會使用這個配置,當然也可以對某個倉庫指定不同的用戶名和Email地址。

  4. 點擊這裡 ,下載並安裝TortoiseGit圖形化工具,安裝後可以通過滑鼠進行Git命令的操作。如下所示:

    1543061444748

Git結合Github進行實戰演練

Git本地倉庫與GitHub遠程倉庫關聯並獲取最新的代碼

這部分我們就進行Git的實戰吧,正好前面幾篇文章已經為大家演示了幾個例子,那麼我們就把前面幾個例子為例,使用Git把他們托管到GitHub上面吧。

  1. 假設你已經有了GitHub賬號,沒有的話自己去註冊。點擊這裡 登錄GitHub,

  2. 自報家門,配置你是誰(如果你在上面的Git安裝)裡面已經按照下麵進行了配置,這裡就無需再配置。首先滑鼠右鍵按照下圖所示打開Git Bash 然後按照下圖所示進行配置:

    1543063300748

    1543063525086

  3. 生成ssh key 在git bash上面輸入ssh-keygen -t rsa -C "你的郵箱" 它會有三次等待你輸入,直接回車即可。下麵的圖是因為我已經生成了,詢問我是否覆蓋,我輸入y選擇了是重新生成了。

    1543063686083

  4. 將生成的ssh key拷貝到剪貼板,執行 clip < ~/.ssh/id_rsa.pub (或者到上圖提示的路徑里去打開文件並複製):

    1543064147452

  5. 打開github並按照如下圖所示打開Settings

    1543064363837

  6. 點擊左邊的SSH and GPG keys 然後在右邊點擊 New SSH key

    1543064336071

    將ssh key粘貼到右邊的Key裡面。Title隨便命名即可。這時候GitHub會給你發送一封郵件

    1543064246038

  7. 執行 ssh -T [email protected]測試結果如下說明GitHub配置成功。

    1543064535854

  8. GitHub上創建一個新的項目,項目名稱為Czar.Cms,這個倉庫將作為我們後面CMS系統的GitHub上的遠程倉庫
    • 首先是在右上角“+”進入創建界面
      1543065344474
    • 接著按照如下所示輸入項目名稱,然後點擊Create repository 就創建好了。

    1543065764512

    這裡我們有選擇以Readme初始化項目。所以生成後的結構如下所示:

    1543065918196

  9. 下麵我們就在本地初始化一個倉庫,然後與GitHub的遠程倉庫關聯起來吧。

  10. 我們在我們的工作文件夾中,打開Git Bash,然後輸入如下命令git init來初始化一個本地倉庫。

    1543066727823

  11. 然後輸入git remote 查看下遠程倉庫,正常的話應該有0個,現在就讓我們添加下我們剛纔建立的GitHub上的遠程倉庫吧.然後再看下遠程倉庫列表,發現已經有一個了,名字為github
    1543067824895

    git remote add github github遠程倉庫的地址
    
  12. 然後輸入git pull github master 就會從剛纔我們配置的遠程倉庫拉取master分支的代碼。如下所示:

    1543067968316

  13. 獲取之後然後看下我麽的項目文件夾,如下所示:已經從GitHub上獲取到了最新的代碼:

    1543068120750

把上篇文章的源碼上傳到GitHub的Sample02分支上

  1. 在我們的本地倉庫文件夾打開git bash 然後輸入git checkout -b Sample02 命令創建並切換到Sample02 這個分支,然後把我們上篇文章的代碼拷貝到這個文件夾,如下圖所示

    1543068715835

    1543068674449

  2. 輸入git status 查看當前倉庫有哪些文件做了修改,如下圖所示,紅色部分表示已經發生了修改

    1543069027605

  3. 輸入git add Sample02/ 把Sample02文件夾下麵所有的已經發生了修改的文件都放進'暫存區' 然後輸入git status 查看一下當前的狀態,都變成了綠色,說明Sample02文件夾下麵的修改內容都加入了暫存區

    1543069251735

  4. 接著輸入git commit -m '註釋內容'命令把我們暫存區的代碼提交到我們的本地倉庫

    1543069360089

  5. 然後輸入git status 查看一下,發現所有的修改都已經提交成功了。

    1543069432593

  6. 輸入如下命令git push github Sample02把我們的本地代碼提交到遠程倉庫的'Sample02分支'吧

    1543069575141

    註意,這裡時提交到Github上的Sample02分支上,而我們的GitHub上沒有這個分支,所以會自動幫我們創建這個分支。

  7. 這裡第三篇的事例代碼就上傳到Github上了。大家可以去查看下,順便給個Star哦,因為後面的CMS的代碼我也會放到這個倉庫,只不過是不同的分支而已。

  8. 下麵就讓我們切換回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這個分支的修改到當前分支,並給這次合併添加註釋

好了,今天就給大家介紹到這,主要是給大家介紹平時實際項目中常用的命令,對於不常用的命令沒有介紹,因為畢竟是實戰,所以以實用為主。下篇文章我會給大家介紹一下Dapper的使用(玩資料庫了)來為後面我們的CMS系列課程打下基礎,畢竟要照顧一些新手朋友。如果大家有什麼問題的話可以加.NET Core項目實戰交流群637326624跟大家交流。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 一、進程 1、多任務原理 多任務是指操作系統同時可以運行多個任務。 單核CPU實現多任務原理:操作系統輪流讓各個任務交替執行; 多核CPU實現多任務原理:真正的執行多任務只能在多核CPU上實現,多出來的任務輪流調度到每個核心上執行。 併發:看上去一起執行,任務數多於CPU核心數; 並行:真正的一起執 ...
  • 類的常用魔術方法:無需人為調用,基本是在特定的時刻自動觸發,方法名被前後兩個下劃線包裹 魔術方法,總結表: __init__:構造函數。初始化的時候調用。__new__:對象實例化方法,其實這才是類裡面第一個被調用的方法,在構造函數之前調用,之後才是__init__,只是這個比較特殊,一般不使用。_ ...
  • 大端模式:低位位元組存在高地址上,高位位元組存在低地址上 小端模式:高位位元組存在高地址上,低位位元組存在低地址上 例如對於0x11223344存儲如下: 用union來測試機器的大小端模式 #include <stdio.h> // 共用體中很重要的一點:a和b都是從u1的低地址開始的。 // 假設u1所 ...
  • 主要參考文:Ceres Solver 在Windows下安裝配置筆記 eigen、gflags、glog、suitesparse按照上面的鏈接中的指導配置即可。 配置ceres的時候,按照上面的鏈接內容配置,在點擊configure後會出現在findeigen.camke文件中報錯,提示找不到eig ...
  • void AllSortCore(char *str,int begin,int end); void AllSort(char *str) { if(str == NULL) return ; int n = strlen(str); AllSortCore(str,0,n-1); } void ... ...
  • Git 是什麼? Git 是一個分散式的代碼管理容器,本地和遠端都保有一份相同的代碼。 Git 倉庫主要是由是三部分組成:本地代碼,緩存區,提交歷史,這幾乎是所有操作的本質,但是為了文章更加簡單易懂,就不圍繞這塊展開了,有興趣的可以去瞭解下。 開門見山,我們直接來說說 Git 有哪些常見的操作。 G ...
  • Query DSL 1. "Query DSL 概要,MatchAllQuery,全文查詢簡述" 2. " Match Query" 3. "Match Phrase Query 和 Match Phrase Prefix Query" Java Rest Client API 1. "Elasti ...
  • 在業務系統,異常處理是所有開發人員必須面對的問題,在一定程度上,異常處理的能力反映出開發者對業務的駕馭水平;本章將著重介紹如何在 WebApi 程式中對異常進行捕獲,然後利用 Nlog 組件進行記錄;同時,還將介紹兩種不同的 異常捕獲方式:管道捕獲/服務過濾;通過本練習,將學習到如何捕獲異常、處理異... ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...