西安網(wǎng)站推廣方案建網(wǎng)站公司
Git快速入門
文章目錄
- Git快速入門
- 0.前言
- 1.安裝和配置
- 2.新建版本庫
- 2.1.本地創(chuàng)建
- 2.2.云端下載
- 3.版本管理
- 3.1.添加和提交文件
- 3.2.回退版本
- 3.2.1.soft模式
- 3.2.2.mixed模式
- 3.2.3.hard模式
- 3.2.4.使用場景
- 3.3.查看版本差異
- 3.4.忽略文件
- 4.云端配置
- 4.1.Github
- 4.1.1.SSH配置
- 4.1.2.關(guān)聯(lián)本地倉庫和遠(yuǎn)程倉庫
- 4.2.Gitee
- 4.3.GitLab
- 5.在VSCode中使用Git
- 5.1.配置Git
0.前言
前兩天刷視頻刷到Git的教學(xué)視頻,才突然發(fā)現(xiàn)自己大學(xué)四年居然連Git都不會用,實在是太蠢了。今天也是熬到周五了,干點自己的事,囫圇吞棗地學(xué)個Git吧!
雖然發(fā)這篇博客確實是周五發(fā)的,但其實這個Flag是上上周五立的
當(dāng)然了,鑒于筆者水平很差,如果想要精通Git這篇筆記是遠(yuǎn)遠(yuǎn)不夠的。如果只是想用一下,我覺得看這篇筆記還是OK的。作為方便其他初學(xué)者參考的筆記,筆者盡可能詳細(xì)記錄,爭取看了就能會。
本篇筆記參考視頻:【GeekHour】一小時Git教程_嗶哩嗶哩_bilibili
強烈推薦如果有時間的話去看一下這位UP的視頻,動畫精美,內(nèi)容詳細(xì),非常不錯!
需要強調(diào)的是這個東西最多最多也只是一個工具,不要喧賓奪主。
1.安裝和配置
進(jìn)入Git官網(wǎng):Git - Downloads (git-scm.com),下載自己操作系統(tǒng)對應(yīng)的版本即可。
安裝過程中需要注意的點不多。幾乎可以一路默認(rèn)配置,除了這里需要選擇你常用的編譯器:
安裝完畢后打開Git CMD(注意不是普通CMD),輸入:
git -v

能夠正確顯示版本號,安裝成功。
安裝完畢后我們配置用戶名和郵箱。在命令行中先后輸入下面兩行代碼:
git config --global user.name "xxx"
git config --global user.email "xxx@xxx.com"
這兩行代碼輸入完畢后是沒有答復(fù)的,不用擔(dān)心。配置完后可以輸入下面這條指令來查看是否配置成功:
git config --list

可以看到?jīng)]有問題。
2.新建版本庫
版本庫又名倉庫,英文名Repository,簡稱Repo。倉庫通俗來說就是目錄。創(chuàng)建倉庫有兩種途徑,一種是在本地創(chuàng)建,一種是從云端下載。
2.1.本地創(chuàng)建
首先需要找到一個合適的位置創(chuàng)建一個空目錄,右鍵,選擇Open Git Bash here
:
輸入:
git init

可以看到在Git Learning目錄下新建了一個.git文件夾。但是細(xì)心的朋友可能會發(fā)現(xiàn)文件夾是空的:
這是因為.git文件夾是隱藏的,我們在查看中勾選顯示隱藏的項目:
這樣就能看到這個文件夾了:
不過平時不需要看到,只是在這里做演示。平時完全可以隱藏掉,這樣可以防止誤刪。
2.2.云端下載
我們還可以通過git命令直接從Github或Gitee上下載自己或別人的倉庫,在命令行輸入:
git clone https://gitee.com/xxxxxxxxx
git clone https://github.com/xxxxxxxx

稍等片刻即可。
3.版本管理
在正式開始進(jìn)行版本管理之前,我們要先了解一下Git的工作區(qū)域和文件狀態(tài)。這一部分強烈推薦看這段視頻,一共就3分鐘,這里僅放兩張圖。視頻鏈接:04.工作區(qū)域和文件狀態(tài)_嗶哩嗶哩_bilibili
3.1.添加和提交文件
編輯好新文件后,可以通過以下三種方式將文件添加到暫存區(qū):
git add file1.txt
git add *.txt
git add .
第一條指令是只添加某一文件,第二條指令是將所有.txt格式的文件添加到暫存區(qū),第三條指令是將文件夾內(nèi)所有文件都添加到暫存區(qū)。
比如我們輸入:
git add file1.txt
然后輸入:
git status

從上到下可以看到No commits yet
,即還沒有被提交到本地倉庫;然后Changes to be committed
,這是add到“cache”中但是還未“commit”的file1.txt;然后Untracked files
,這是連add都沒add的文件。
我們再輸入:
git add .
git status

可以看到都提交到暫存區(qū)了。
添加到暫存區(qū)后,需要用commit指令將暫存區(qū)里的文件提交到倉庫。輸入:
git commit -m log
git commit
如果用第一條,則在-m后面,即log的位置輸入你本次提交留下的日志。如果用第二條,則會跳轉(zhuǎn)你安裝時默認(rèn)的編譯器。
先試試第一條:

我們查看一下日志,輸入:
git log

我們創(chuàng)建三個新文件,然后重新上傳到暫存區(qū),然后試一試不加-m會發(fā)生什么。從暫存區(qū)提交到倉庫之前還是先看一看狀態(tài):

現(xiàn)在提交到倉庫:
稍等片刻后,自動跳轉(zhuǎn)到了VSCode,這是我在安裝Git時配置的默認(rèn)editor。我們在光標(biāo)位置輸入這次的log信息,然后在最后一行輸入:
:wq
注意輸入的是半角冒號。
輸入完后Ctrl+s
保存文件,然后直接關(guān)閉文件,終端就會自動更新:

再看一看log:

到這里就可以給我剛剛寫的log糾錯,說明在VSCode中寫log并不需要輸入:wq
退出,而是直接保存并退出即可。
3.2.回退版本
回退版本分為3個類型,分別是soft、hard和mixed,默認(rèn)的模式是mixed。
我們先在分別在file1和file2中輸入(直接打開文本文件打字就行):
file1-v3
隨便說點話吧
file2-v3
實在不知道說什么了哥
然后看一看狀態(tài):

該add了:

然后commit:

為了便于觀察,我們再在file1、2、3中分別輸入:
file1-v4
沒有刪掉剛剛的內(nèi)容哦,只是在后面又加了一句話
file2-v4
把剛剛的那些廢話刪了,現(xiàn)在只剩這一句了
file3-v4
我是純純的新文件
同時,新建一個file4.txt,刪掉之前這三個文件:
還是先add,然后看看status:

可以看到它是誤以為我刪了倆,改名了一個,這個其實無所謂。直接commit后看log:

3.2.1.soft模式
現(xiàn)在來試驗一下版本回退,先試試soft模式:
git reset --soft 4e30568f302f979cde4debe02c434f9e7ce18ea5
注意,4e30568f302f979cde4debe02c434f9e7ce18ea5
是v3的版本號,這個每個人的都不同,需要自己復(fù)制。
然后瞅瞅log:

再看看file1:

再看看status:

可見,soft模式是回退到提交至本地倉庫那一步,即回退到commit之前。
3.2.2.mixed模式
我們重新commit:

然后輸入:
git reset --mixed 4e30568f302f979cde4debe02c434f9e7ce18ea5

然后瞅瞅log:

再看看file1:

再看看status:

可見,soft模式是回退到提交至?xí)捍鎱^(qū)那一步,即回退到add之前。
3.2.3.hard模式
我們重新add并commit:

然后輸入:
git reset --hard 4e30568f302f979cde4debe02c434f9e7ce18ea5

然后瞅瞅log:

再看看file1:
再看看status:

可見,soft模式是回退到v3版本最初的樣子,不論是文件中的內(nèi)容,還是項目中包含哪些文件,都是最初的樣子。
但是這時候就出現(xiàn)了一個問題,這些文件都沒了,我后悔了該怎么辦?別急,可以回溯。輸入:
git reflog

然后復(fù)制v4的版本號,輸入:
git reset --hard b1e08a0
注意,這里的版本號是b1e08a0 HEAD@{1}: commit: v4
這一行的版本號。
看看log:

回溯成功了。
3.2.4.使用場景
如果你已經(jīng)更新到v4,覺得v3相比于v2沒什么區(qū)別,單開一個版本號太浪費了,那可以用soft或mixed模式回退到v2,然后重新commit即可。
一般不推薦使用hard,除非你百分之百確定這玩意沒用了。不過即便是用了hard,文件更改沒了,也不是不可挽回的,回溯就成。
3.3.查看版本差異
在文件夾內(nèi)新建一個file5.txt:

然后依次add
、commit
。隨后我們更改一下file5.txt里的內(nèi)容,在命令行中輸入:
get diff

如果我們add
后再輸入get diff
,這個差異就不見了:

也就是說,git diff
這個命令是查看上一次commit
之后,這一次add
之前的差異。如果想查看上一次commit
之后,這一次add
之后、commit
之前的差異,需要輸入:
git diff HEAD

也可以對比add
前后的差異:
git diff --cached

也可以查看不同版本的差異。我們先把這個版本commit一下:

然后查看之前的版本號:

我們對比v6和v5的區(qū)別,版本號分別為6fc94a042c9e8f7b73ed53fab5bbe83ed27be8e6
和e8dda090421cfd0f9d59ead9f976b9d79736fc54
,輸入:
git diff 6fc94a042c9e8f7b73ed53fab5bbe83ed27be8e6 e8dda090421cfd0f9d59ead9f976b9d79736fc54

如果要比較某一版本和當(dāng)前版本的差異,可以不輸入當(dāng)前版本的版本號,而是用HEAD
代替,如:
git diff HEAD e8dda090421cfd0f9d59ead9f976b9d79736fc54

更經(jīng)常用的命令是比較當(dāng)前版本和上一版本的差異,輸入:
git diff HEAD~ HEAD

這個命令也可以變?yōu)?#xff1a;
git diff HEAD~2 HEAD

這是查看當(dāng)前版本和兩個版本之前版本的差異。
也可以單獨查看某一個文件的差異,先整體看一下和三個版本之前的差異:
git diff HEAD~3 HEAD

可以看到有很多文件都不同。我們輸入:
git diff HEAD~3 HEAD file2.txt

就只顯示file2的差異了。
3.4.忽略文件
可以參考這篇博客:[Git 開發(fā)必備 .gitignore 詳解!【建議收藏】-CSDN博客](https://blog.csdn.net/nyist_zxp/article/details/119887324?ops_request_misc=%7B%22request%5Fid%22%3A%22d4ab1f51b41cda7446b6cff986a5141f%22%2C%22scm%22%3A%2220140713.130102334…%22%7D&request_id=d4ab1f51b41cda7446b6cff986a5141f&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2alltop_positive~default-1-119887324-null-null.142v100pc_search_result_base2&utm_term=Git ignore&spm=1018.2226.3001.4187)
常用的忽略一般是忽略某個目錄,一般編譯產(chǎn)生的文件都會放在某個文件夾下,這個文件夾我們一般無需上傳,將其忽略掉即可。舉個例子,這是一個STM32H7項目的文件夾:
.
├─Core
│ ├─Inc
│ └─Src
├─Drivers
│ ├─CMSIS
│ │ ├─Core
│ │ │ ├─Include
│ │ │ └─Template
│ │ │ └─ARMv8-M
│ │ ├─Core_A
│ │ │ ├─Include
│ │ │ └─Source
│ │ ├─Device
│ │ │ └─ST
│ │ │ └─STM32H7xx
│ │ │ ├─Include
│ │ │ └─Source
│ │ │ └─Templates
│ │ │ ├─arm
│ │ │ ├─gcc
│ │ │ └─iar
│ │ │ └─linker
│ │ ├─docs
│ │ │ └─General
│ │ │ └─html
│ │ ├─DSP
│ │ │ ├─DSP_Lib_TestSuite
│ │ │ │ ├─Common
│ │ │ │ │ ├─inc
│ │ │ │ │ │ ├─basic_math_tests
│ │ │ │ │ │ ├─complex_math_tests
│ │ │ │ │ │ ├─controller_tests
│ │ │ │ │ │ ├─fast_math_tests
│ │ │ │ │ │ ├─filtering_tests
│ │ │ │ │ │ ├─intrinsics_tests
│ │ │ │ │ │ ├─matrix_tests
│ │ │ │ │ │ ├─statistics_tests
│ │ │ │ │ │ ├─support_tests
│ │ │ │ │ │ ├─templates
│ │ │ │ │ │ └─transform_tests
│ │ │ │ │ ├─JTest
│ │ │ │ │ │ ├─inc
│ │ │ │ │ │ │ ├─arr_desc
│ │ │ │ │ │ │ ├─opt_arg
│ │ │ │ │ │ │ └─util
│ │ │ │ │ │ └─src
│ │ │ │ │ ├─platform
│ │ │ │ │ │ ├─ARMCC
│ │ │ │ │ │ ├─ARMCLANG
│ │ │ │ │ │ └─GCC
│ │ │ │ │ └─src
│ │ │ │ │ ├─basic_math_tests
│ │ │ │ │ ├─complex_math_tests
│ │ │ │ │ ├─controller_tests
│ │ │ │ │ ├─fast_math_tests
│ │ │ │ │ ├─filtering_tests
│ │ │ │ │ ├─intrinsics_tests
│ │ │ │ │ ├─matrix_tests
│ │ │ │ │ ├─statistics_tests
│ │ │ │ │ ├─support_tests
│ │ │ │ │ └─transform_tests
│ │ │ │ ├─DspLibTest_FVP
│ │ │ │ ├─DspLibTest_FVP_A5
│ │ │ │ │ └─RTE
│ │ │ │ │ ├─CMSIS
│ │ │ │ │ └─Device
│ │ │ │ │ └─ARMCA5
│ │ │ │ ├─DspLibTest_MPS2
│ │ │ │ ├─DspLibTest_SV_FVP
│ │ │ │ ├─DspLibTest_SV_MPS2
│ │ │ │ └─RefLibs
│ │ │ │ ├─inc
│ │ │ │ └─src
│ │ │ │ ├─BasicMathFunctions
│ │ │ │ ├─ComplexMathFunctions
│ │ │ │ ├─ControllerFunctions
│ │ │ │ ├─FastMathFunctions
│ │ │ │ ├─FilteringFunctions
│ │ │ │ ├─HelperFunctions
│ │ │ │ ├─Intrinsics
│ │ │ │ ├─MatrixFunctions
│ │ │ │ ├─StatisticsFunctions
│ │ │ │ ├─SupportFunctions
│ │ │ │ └─TransformFunctions
│ │ │ ├─Examples
│ │ │ │ └─ARM
│ │ │ │ ├─arm_class_marks_example
│ │ │ │ │ └─RTE
│ │ │ │ │ └─Device
│ │ │ │ │ ├─ARMCM0
│ │ │ │ │ ├─ARMCM3
│ │ │ │ │ ├─ARMCM4_FP
│ │ │ │ │ └─ARMCM7_SP
│ │ │ │ ├─arm_convolution_example
│ │ │ │ │ └─RTE
│ │ │ │ │ └─Device
│ │ │ │ │ ├─ARMCM0
│ │ │ │ │ ├─ARMCM3
│ │ │ │ │ ├─ARMCM4_FP
│ │ │ │ │ └─ARMCM7_SP
│ │ │ │ ├─arm_dotproduct_example
│ │ │ │ │ └─RTE
│ │ │ │ │ └─Device
│ │ │ │ │ ├─ARMCM0
│ │ │ │ │ ├─ARMCM3
│ │ │ │ │ ├─ARMCM4_FP
│ │ │ │ │ └─ARMCM7_SP
│ │ │ │ ├─arm_fft_bin_example
│ │ │ │ │ └─RTE
│ │ │ │ │ └─Device
│ │ │ │ │ ├─ARMCM0
│ │ │ │ │ ├─ARMCM3
│ │ │ │ │ ├─ARMCM4_FP
│ │ │ │ │ └─ARMCM7_SP
│ │ │ │ ├─arm_fir_example
│ │ │ │ │ └─RTE
│ │ │ │ │ └─Device
│ │ │ │ │ ├─ARMCM0
│ │ │ │ │ ├─ARMCM3
│ │ │ │ │ ├─ARMCM4_FP
│ │ │ │ │ └─ARMCM7_SP
│ │ │ │ ├─arm_graphic_equalizer_example
│ │ │ │ │ └─RTE
│ │ │ │ │ └─Device
│ │ │ │ │ ├─ARMCM0
│ │ │ │ │ ├─ARMCM3
│ │ │ │ │ ├─ARMCM4_FP
│ │ │ │ │ └─ARMCM7_SP
│ │ │ │ ├─arm_linear_interp_example
│ │ │ │ │ └─RTE
│ │ │ │ │ └─Device
│ │ │ │ │ ├─ARMCM0
│ │ │ │ │ ├─ARMCM3
│ │ │ │ │ ├─ARMCM4_FP
│ │ │ │ │ └─ARMCM7_SP
│ │ │ │ ├─arm_matrix_example
│ │ │ │ │ └─RTE
│ │ │ │ │ └─Device
│ │ │ │ │ ├─ARMCM0
│ │ │ │ │ ├─ARMCM3
│ │ │ │ │ ├─ARMCM4_FP
│ │ │ │ │ └─ARMCM7_SP
│ │ │ │ ├─arm_signal_converge_example
│ │ │ │ │ └─RTE
│ │ │ │ │ └─Device
│ │ │ │ │ ├─ARMCM0
│ │ │ │ │ ├─ARMCM3
│ │ │ │ │ ├─ARMCM4_FP
│ │ │ │ │ └─ARMCM7_SP
│ │ │ │ ├─arm_sin_cos_example
│ │ │ │ │ └─RTE
│ │ │ │ │ └─Device
│ │ │ │ │ ├─ARMCM0
│ │ │ │ │ ├─ARMCM3
│ │ │ │ │ ├─ARMCM4_FP
│ │ │ │ │ └─ARMCM7_SP
│ │ │ │ ├─arm_variance_example
│ │ │ │ │ └─RTE
│ │ │ │ │ └─Device
│ │ │ │ │ ├─ARMCM0
│ │ │ │ │ ├─ARMCM3
│ │ │ │ │ ├─ARMCM4_FP
│ │ │ │ │ └─ARMCM7_SP
│ │ │ │ └─boot
│ │ │ ├─Include
│ │ │ ├─Lib
│ │ │ │ ├─ARM
│ │ │ │ ├─GCC
│ │ │ │ └─IAR
│ │ │ ├─PythonWrapper
│ │ │ │ └─cmsisdsp_pkg
│ │ │ │ └─src
│ │ │ └─Source
│ │ │ ├─BasicMathFunctions
│ │ │ ├─CommonTables
│ │ │ ├─ComplexMathFunctions
│ │ │ ├─ControllerFunctions
│ │ │ ├─FastMathFunctions
│ │ │ ├─FilteringFunctions
│ │ │ ├─MatrixFunctions
│ │ │ ├─StatisticsFunctions
│ │ │ ├─SupportFunctions
│ │ │ └─TransformFunctions
│ │ ├─Include
│ │ ├─NN
│ │ │ ├─Examples
│ │ │ │ ├─ARM
│ │ │ │ │ └─arm_nn_examples
│ │ │ │ │ ├─cifar10
│ │ │ │ │ │ └─RTE
│ │ │ │ │ │ ├─Compiler
│ │ │ │ │ │ ├─Device
│ │ │ │ │ │ │ ├─ARMCM0
│ │ │ │ │ │ │ ├─ARMCM3
│ │ │ │ │ │ │ ├─ARMCM4_FP
│ │ │ │ │ │ │ └─ARMCM7_SP
│ │ │ │ │ │ ├─_ARMCM0
│ │ │ │ │ │ ├─_ARMCM3
│ │ │ │ │ │ ├─_ARMCM4_FP
│ │ │ │ │ │ └─_ARMCM7_SP
│ │ │ │ │ └─gru
│ │ │ │ │ └─RTE
│ │ │ │ │ ├─Compiler
│ │ │ │ │ ├─Device
│ │ │ │ │ │ ├─ARMCM0
│ │ │ │ │ │ ├─ARMCM3
│ │ │ │ │ │ ├─ARMCM4_FP
│ │ │ │ │ │ └─ARMCM7_SP
│ │ │ │ │ ├─_ARMCM0
│ │ │ │ │ ├─_ARMCM3
│ │ │ │ │ ├─_ARMCM4_FP
│ │ │ │ │ └─_ARMCM7_SP
│ │ │ │ └─IAR
│ │ │ │ └─iar_nn_examples
│ │ │ │ ├─NN-example-cifar10
│ │ │ │ └─NN-example-gru
│ │ │ ├─Include
│ │ │ ├─NN_Lib_Tests
│ │ │ │ └─nn_test
│ │ │ │ ├─Ref_Implementations
│ │ │ │ └─RTE
│ │ │ │ ├─Device
│ │ │ │ │ ├─ARMCM0
│ │ │ │ │ ├─ARMCM3
│ │ │ │ │ ├─ARMCM4
│ │ │ │ │ ├─ARMCM4_FP
│ │ │ │ │ ├─ARMCM7_SP
│ │ │ │ │ └─STM32F411RETx
│ │ │ │ ├─_ARMCM0
│ │ │ │ ├─_ARMCM3
│ │ │ │ ├─_ARMCM4_FP
│ │ │ │ └─_ARMCM7_SP
│ │ │ └─Source
│ │ │ ├─ActivationFunctions
│ │ │ ├─ConvolutionFunctions
│ │ │ ├─FullyConnectedFunctions
│ │ │ ├─NNSupportFunctions
│ │ │ ├─PoolingFunctions
│ │ │ └─SoftmaxFunctions
│ │ ├─RTOS
│ │ │ └─Template
│ │ └─RTOS2
│ │ ├─Include
│ │ ├─Source
│ │ └─Template
│ └─STM32H7xx_HAL_Driver
│ ├─Inc
│ │ └─Legacy
│ └─Src
├─Function
└─MDK-ARM├─DebugConfig├─RTE│ └─_Test1.0.0└─Test1.0.0
假設(shè)我們需要忽略Drivers文件夾和MDK-ARM中的RTE文件夾,我們應(yīng)該如何操作呢?輸入:
vi .gitignore

然后輸入:
Drivers/
MDK-ARM/RTE/

然后按Esc
,輸入:wq
:

即可退出。
看一下狀態(tài):

可以看到并沒有顯示Drivers文件夾。
4.云端配置
4.1.Github
自行創(chuàng)建Github賬號。
4.1.1.SSH配置
進(jìn)入GitHub,創(chuàng)建自己的倉庫:
配置如下(注意不要勾選其他內(nèi)容,否則不會顯示引導(dǎo)界面):
然后會進(jìn)入一個引導(dǎo)界面:
打開Git Bash終端,然后先后輸入:
cd
ssh-keygen -t rsa -b 4096

然后需要手動輸入一個名稱,這個可以直接回車讓他自動生成,需要連續(xù)回車三下:

然后先后輸入:
cd .ssh
ls -ltr

沒有后綴的是私鑰文件,誰也不要給;有后綴的是公鑰文件。輸入:
vi id_rsa.pub

復(fù)制內(nèi)容:
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDQiflzS5ow+......PRv86w== Fangzhou Tan@LAPTOP-JQFPEMOQ
回到Github,點擊頭像,找到Settings:
然后找到SSH配置:
名字是任意的,想是啥就是啥,不用和倉庫名一樣。
設(shè)置好后在引導(dǎo)界面復(fù)制SSH:
到本地的文件夾,打開git bash終端,然后輸入(注意在輸入前要關(guān)閉代理):
git clone git@github.com:LengYuuu/Hello_Github.git

需要手動輸入yes,即可完成克隆。如下所示:
在文件夾中加點文件:

然后在中斷中先后輸入:
git add .
git commit -m "first commit"
git push

去Github刷新一下:
成功上傳!
4.1.2.關(guān)聯(lián)本地倉庫和遠(yuǎn)程倉庫
寫不動了實在是,后面再補吧
4.2.Gitee
和Github幾乎一樣。
4.3.GitLab
私有化部署
暫時不需要私有化部署,也是先挖坑吧。
5.在VSCode中使用Git
5.1.配置Git
如果按照剛剛的步驟下載Git,但是打開VSCode,顯示:
那可能是Git的環(huán)境變量沒有配好。在環(huán)境變量中加入:

然后在命令行中檢查一下:

重啟VSCode:
如果還是沒有找到Git,則點擊文件 -> 首選項 -> 設(shè)置,搜索 git.path
:
然后手動設(shè)置 Git 的完整路徑,例如:
json
"git.path": "C:\\Program Files\\Git\\bin\\git.exe"
然后保存,重啟VSCode即可。
未完待續(xù)…
先把學(xué)完的部分發(fā)出來,后面慢慢學(xué)慢慢補齊