很早就安裝了VS Code,當時只是從一篇技術文章中看到的,說是體積小功能強,支持多種編程語言,各種語法高亮,總之就是很好的意思,所以就下載下來了,不過一直沒用過。工作主要是C# ,所以開發都是用的VS,從03版本一直用到現在的17版本. 最近項目過了火燒眉毛的階段,打算學習點東西,正好用用VS Code,這個行業不學是真的很快被淘汰,亞歷山大~~~
本篇目錄
- VS Code 中的Source Control
- Git簡介
- Gitlab上創建倉庫(Repository)
- 用VS Code開啟該目錄
- VS code執行基本操作
- VS Code中用Git 管理分支Branch
- 參考文獻
VS Code 中的Source Control
VS Code 是一款程序編輯器。除了支持多種開發語言編輯外,Source Control 功能是很重要的一部分。目前比較火熱的版本控制工具就是Git了,我之前用的一直都是TFS,也是最近一年才開始使用git,用了TFS再轉換為git的開發人員,能更深刻的體會到分布式版本控制系統的好處。幸運的是VS Code也把支援Git的使用,作為重要功能之一。Source control在VS Code面板左側功能列表之中,由此看出其重要地位。Git簡介
在使用Git功能之前,需要對Git有一定的了解。好在我已經用過了,雖然不是很深入,但是最基本的使用還是木有問題滴。推薦一個學習Git的好資源 寶哥的 30天精通Git版本管控
了解到Git是 分散式版本控制系統,Git專案有三個主要區域:Git目錄、工作目錄(working directory)、暫存區域(Stage area) 等基本知識后,就可以使用VS Code的Git功能了。
VS Code的Git功能,是基於本機電腦安裝的Git套件。如果要使用的需要先確認Git條件是否已經安裝。若沒有安裝,請到Git官網下載安裝檔案並安裝到本地。
Gitlab上創建倉庫(Repository)
大家比較熟知的工具是GitHub,而我們公司用的是GitLab,功能幾乎差不多,平時在外面自己的項目有時候會掛到GitHub上,在公司里面就全部用GitLab了。下面就以GitLab為例,創建倉庫。Git可以再本地創建倉庫,但是一個項目通常是由各個團隊成員一起開發,這時候就需要創建遠端倉庫了。創建遠端倉儲
- 登錄Gitlab ,並創建一個新的項目。
- 創建成果后拷貝項目中遠端倉庫的 URL
Clone Gitlab的Repository到本地
-
在本地創建好需要保存該倉儲的目錄,比如我用的E:\Projects\NETCoreSpace\Demo\workportal
-
在創建好的目錄中右鍵 選擇Git bash here .輸入
git clone [URL]
url就是上一部中拷貝的遠端倉庫的URL。
用VS Code開啟該目錄
以上工作准備完畢后,打開VS Code,File-Open Folder 選擇上面創建的目錄。就可以看到,VS Code 會有個圖標顯示正在存取該目錄的git資訊。
VS code執行基本操作
通過上面的步驟,我們開啟的目錄就已經納入了Git管控,如果我們在VS中做一些變更,對git來說都是狀態的變更。就可以在VS的左測的Git 頁簽中看到檔案狀態
U-Untracked
在View ->Terminal 中輸入dotnet new sln -n WorkPortal .可以在當前目錄創建一個solution文件。此時在左側++Git 頁簽++中就會看到該檔案被加入到CHANGES下面並標注一個**U**表明當前文件窗台是Untracked fileA-Added
在左側的**Git頁簽**中,選擇該文件右鍵選擇Stage Changes 或者直接點擊當前文件后方的【+】號,就會將當前檔案由 **工作目錄(working directory)** 放到**暫存區域(staging arae)**. 此時檔案會出現在STAGED CHANGES 中並被標注為**A**,代表git add 的指令被加入到暫存區域。M-Modified
新創建一個文件,保存為Untitle-1.txt,放入暫存區后,再次編輯文件保存,會發現該文件同時出現在STAGED CHANGES 和CHANGES 中。前者狀態是**A**,后者狀態為**M**.代表該檔案已經修改,等待再次被加入到暫存區域。D-Deletd
在文檔目錄中對創建的文件做刪除動作,此時該文檔就會出現在CHANGES中並被標記為**D**。 StageChanges 之后就會在STAGED CHANGES中顯示該文檔同樣標記為**D**。輸入描述執行Commit之后將會刪除此文檔。Commit
如果要將**暫存區域**中的變更全部**Commit**到Git目錄中,可以在下圖區域輸入要Commit的信息,然后按下Ctrl+Enter快捷鍵,就會進行git commit 的動作。Push
在VS中創建了一個.NetCore應用程序,成功配置並運行。此時遠端倉庫沒有任何內容。本地倉庫將這項目文件都已經Commit。 此時可以用Git頁簽上方的More Action 選擇**Push** ,推送到遠端。Pull
如果多人共用分支開發,在每次開始編寫自己代碼的時候最好先pull一下最新代碼。可以用Git頁面上方的MoreAction中的Pull選項。
VS Code中用Git 管理分支Branch
截止到目前創建的項目都是在master分支上進行。在VS code最下方會顯示當前分之的信息。關於分支的管控,我是一只遵循gitflow的 版本管控流程。 * master 主分支,受保護分支,正式網站的最新的,一致的代碼 * develop 開發分支,受保護分支,測試網站最新的,一致的代碼 * feature 分支,用於新功能開發,隨着功能的創建和完成而創建和刪除 * bugfix 分支,用於測試系統bug修復,隨着功能的修正而創建和刪除 * hotfix分支,用於正式系統緊急bug修復,隨着功能的修正而創建和刪除 * release分支,用於測試代碼發布都正式網站而創建的分支,隨着發布的需求而創建和刪除。關於分支我目前所用到的操作主要如下:
- 分支的創建 CheckOut/Start[git flow ]
- 分支的簽出 CheckOut:簽出指定分支代碼
- 分支的合並 Merge:將不同分支代碼進行合並
- 分支的提取 Pull:將遠端分支的修改抓取到本地
- 分支的推送 Push:將本地修改內容推送到遠端分支
- 分支的刪除 Delete :刪除當前分支所有內容
- 分支的擷取 Fetch:這個功能很少用,擷取只是將內容同步到暫存區並不會更新現有代碼。
- 分支的同步 Sync:先Push再Pull
VSCode中對Branch的支持肯定也是必不可少的,在VSCode中可以在最下方看見Git的當前分支,點擊分支名稱,可以在最上方彈出一個對話框,在里面可以Checkout已經存在的分支以及創建新的分支。
創建一個新分支
#### Create new branch... --develop分支 如上圖在彈出的內容中選擇 【+Create new branch】 這時候會彈出如下內容,讓填寫Branch 的名稱,然后按Enter鍵完成創建或者按Esc鍵取消創建。 這里輸入develop 並 Enter,創建成功后會自動切換到develop分支。在最下方的成色條框內最左側就會顯示develop。 此時develop 默認是從master分支創建的。且是創建在本地倉庫的分支。
Create new branch from... --feature 分支
前面的操作與上面相同,不同的是在按下Enter之后會彈出選擇從哪個分支創建。如下圖所示,這個分之是一個feature分支,用來修改主頁面,所以選擇從develop分支創建。創建完成后,會自動簽出當前創建的分支。
這里面因為沒有用gitflow,隨意就是在分支命名上有所區分。后面會研究一下VS中是否可以用gitflow 還是只能結合git 命令來用。
推送當前分支 Push
在Git頁簽的 More Action中選擇Push 就可以將本地倉庫develop推送到遠端。從gitlab中就可以看到develop分支了.
推送當前分支 Push
在Git頁簽的 More Action中選擇Push 就可以將本地倉庫develop推送到遠端。從gitlab中就可以看到develop分支了
簽出分支 Checkout
當前分支是在最后創建的feature-ChangeHomePage中,想要切換到其他分支。這個地方突然想要測試一下分支的簽出與VS中的簽出差異。先說一下我在VS中的操作:如果在一個分支下修改的代碼,要想切換到另一個分支,必須簽入或者復原此分支的修改,才能簽出另外一個分支。在VSCode 中我在當前分支feature-ChangeHomePage分支中修改了Views下Home中的index.cshtml文件。修改后我直接簽出develop分支,將代碼在develop分支上做了Stage以及Commit的動作,此時發現這個Commit就真的在develop分支生效了。而並不向VS中一樣會禁止這種操作。
提交代碼成功后,我再次簽出feature-ChangeHomePage分支,發現這里代碼是沒有變更的。
我感覺這塊的處理還是有點問題的,雖然這次是刻意為之,但這樣並完全沒有規避這種問題,如果向VS中一旦修改了代碼,哪怕是Untracked狀態,不Commit或者undo之前都不允許切換到其他分支,會更好一點。
提取分支 pull
目前master分支的代碼和develop分支是不一致的,為了測試這個功能從遠端將develop分支合並到master分支,然后在本地對master分支進行pull操作。同步分支 Sync
是上面操作中先Push再Pull 和合並。以上的這些操作都會轉換為對應的git command ,出現在VSCode的output窗口中。
參考文獻
* https://dotblogs.com.tw/lapland/2016/04/19/172848感恩每一個寫文檔將知識分享給大家的人,耗時還耗力,還可能收到一些人的惡意評論。其實我也喜歡寫不過不是寫在博客上。后面有時間可以將自己總結的一些東西也都慢慢放上來,能幫助別人最好,能收到指正和指導也很棒,像無私分享的小伙伴學習。
這是我第一篇從草稿里面發布出來的隨筆,如果有錯誤的內容還希望各位瀏覽我文章的伙伴兒們能不吝指出哦!