【软件入门】Git快速入门

news2024/11/27 18:10:03

Git快速入门

文章目录

  • Git快速入门
    • 0.前言
    • 1.安装和配置
    • 2.新建版本库
      • 2.1.本地创建
      • 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.关联本地仓库和远程仓库
      • 4.2.Gitee
      • 4.3.GitLab
    • 5.在VSCode中使用Git
      • 5.1.配置Git

0.前言

前两天刷视频刷到Git的教学视频,才突然发现自己大学四年居然连Git都不会用,实在是太蠢了。今天也是熬到周五了,干点自己的事,囫囵吞枣地学个Git吧!

虽然发这篇博客确实是周五发的,但其实这个Flag是上上周五立的

当然了,鉴于笔者水平很差,如果想要精通Git这篇笔记是远远不够的。如果只是想用一下,我觉得看这篇笔记还是OK的。作为方便其他初学者参考的笔记,笔者尽可能详细记录,争取看了就能会。

本篇笔记参考视频:【GeekHour】一小时Git教程_哔哩哔哩_bilibili

强烈推荐如果有时间的话去看一下这位UP的视频,动画精美,内容详细,非常不错!

需要强调的是这个东西最多最多也只是一个工具,不要喧宾夺主。

1.安装和配置

进入Git官网:Git - Downloads (git-scm.com),下载自己操作系统对应的版本即可。

安装过程中需要注意的点不多。几乎可以一路默认配置,除了这里需要选择你常用的编译器:

image-20241108182004902

安装完毕后打开Git CMD(注意不是普通CMD),输入:

git -v
image-20241108182545745

能够正确显示版本号,安装成功。

安装完毕后我们配置用户名和邮箱。在命令行中先后输入下面两行代码:

git config --global user.name "xxx"
git config --global user.email "xxx@xxx.com"

这两行代码输入完毕后是没有答复的,不用担心。配置完后可以输入下面这条指令来查看是否配置成功:

git config --list
image-20241108183803843

可以看到没有问题。

2.新建版本库

版本库又名仓库,英文名Repository,简称Repo。仓库通俗来说就是目录。创建仓库有两种途径,一种是在本地创建,一种是从云端下载。

2.1.本地创建

首先需要找到一个合适的位置创建一个空目录,右键,选择Open Git Bash here

image-20241108184643890

输入:

git init
image-20241108184756030

可以看到在Git Learning目录下新建了一个.git文件夹。但是细心的朋友可能会发现文件夹是空的:

image-20241108185038339

这是因为.git文件夹是隐藏的,我们在查看中勾选显示隐藏的项目:

image-20241108185148127

这样就能看到这个文件夹了:

image-20241108185311035

不过平时不需要看到,只是在这里做演示。平时完全可以隐藏掉,这样可以防止误删。

2.2.云端下载

我们还可以通过git命令直接从Github或Gitee上下载自己或别人的仓库,在命令行输入:

git clone https://gitee.com/xxxxxxxxx
git clone https://github.com/xxxxxxxx
image-20241108190003388

稍等片刻即可。

3.版本管理

在正式开始进行版本管理之前,我们要先了解一下Git的工作区域和文件状态。这一部分强烈推荐看这段视频,一共就3分钟,这里仅放两张图。视频链接:04.工作区域和文件状态_哔哩哔哩_bilibili

image-20241108190637174

image-20241108190921604

3.1.添加和提交文件

编辑好新文件后,可以通过以下三种方式将文件添加到暂存区:

git add file1.txt
git add *.txt
git add .

第一条指令是只添加某一文件,第二条指令是将所有.txt格式的文件添加到暂存区,第三条指令是将文件夹内所有文件都添加到暂存区。

比如我们输入:

git add file1.txt

然后输入:

git status
image-20241112204353810

从上到下可以看到No commits yet,即还没有被提交到本地仓库;然后Changes to be committed,这是add到“cache”中但是还未“commit”的file1.txt;然后Untracked files,这是连add都没add的文件。

我们再输入:

git add .
git status
image-20241112204816983

可以看到都提交到暂存区了。

添加到暂存区后,需要用commit指令将暂存区里的文件提交到仓库。输入:

git commit -m log
git commit

如果用第一条,则在-m后面,即log的位置输入你本次提交留下的日志。如果用第二条,则会跳转你安装时默认的编译器。

先试试第一条:

image-20241112205109319

我们查看一下日志,输入:

git log
image-20241112205159001

我们创建三个新文件,然后重新上传到暂存区,然后试一试不加-m会发生什么。从暂存区提交到仓库之前还是先看一看状态:

image-20241112205334934

现在提交到仓库:

image-20241112205411271

稍等片刻后,自动跳转到了VSCode,这是我在安装Git时配置的默认editor。我们在光标位置输入这次的log信息,然后在最后一行输入:

:wq

注意输入的是半角冒号。

image-20241112205919030

输入完后Ctrl+s保存文件,然后直接关闭文件,终端就会自动更新:

image-20241112210035078

再看一看log:

image-20241112210113858

到这里就可以给我刚刚写的log纠错,说明在VSCode中写log并不需要输入:wq退出,而是直接保存并退出即可。

3.2.回退版本

回退版本分为3个类型,分别是soft、hard和mixed,默认的模式是mixed。

我们先在分别在file1和file2中输入(直接打开文本文件打字就行):

file1-v3
随便说点话吧
file2-v3
实在不知道说什么了哥

然后看一看状态:

image-20241112211505012

该add了:

image-20241112211532053

然后commit:

image-20241112211800910

为了便于观察,我们再在file1、2、3中分别输入:

file1-v4
没有删掉刚刚的内容哦,只是在后面又加了一句话
file2-v4
把刚刚的那些废话删了,现在只剩这一句了
file3-v4
我是纯纯的新文件

同时,新建一个file4.txt,删掉之前这三个文件:

image-20241112212205063

还是先add,然后看看status:

image-20241112212256013

可以看到它是误以为我删了俩,改名了一个,这个其实无所谓。直接commit后看log:

image-20241112212901309
3.2.1.soft模式

现在来试验一下版本回退,先试试soft模式:

git reset --soft 4e30568f302f979cde4debe02c434f9e7ce18ea5

注意,4e30568f302f979cde4debe02c434f9e7ce18ea5是v3的版本号,这个每个人的都不同,需要自己复制。

然后瞅瞅log:

image-20241112213705738

再看看file1:

image-20241112213750136

再看看status:

image-20241112213921535

可见,soft模式是回退到提交至本地仓库那一步,即回退到commit之前。

3.2.2.mixed模式

我们重新commit:

image-20241112214214249

然后输入:

git reset --mixed 4e30568f302f979cde4debe02c434f9e7ce18ea5
image-20241112223056576

然后瞅瞅log:

image-20241112223127883

再看看file1:

image-20241112223211867

再看看status:

image-20241112223322673

可见,soft模式是回退到提交至暂存区那一步,即回退到add之前。

3.2.3.hard模式

我们重新add并commit:

image-20241112223735431

然后输入:

git reset --hard 4e30568f302f979cde4debe02c434f9e7ce18ea5
image-20241112223822751

然后瞅瞅log:

image-20241112223953526

再看看file1:

image-20241112223920229

再看看status:

image-20241112224009956

可见,soft模式是回退到v3版本最初的样子,不论是文件中的内容,还是项目中包含哪些文件,都是最初的样子。

但是这时候就出现了一个问题,这些文件都没了,我后悔了该怎么办?别急,可以回溯。输入:

git reflog
image-20241112224709090

然后复制v4的版本号,输入:

git reset --hard b1e08a0

注意,这里的版本号是b1e08a0 HEAD@{1}: commit: v4这一行的版本号。

看看log:

image-20241112225210456

回溯成功了。

3.2.4.使用场景

如果你已经更新到v4,觉得v3相比于v2没什么区别,单开一个版本号太浪费了,那可以用soft或mixed模式回退到v2,然后重新commit即可。

一般不推荐使用hard,除非你百分之百确定这玩意没用了。不过即便是用了hard,文件更改没了,也不是不可挽回的,回溯就成。

3.3.查看版本差异

在文件夹内新建一个file5.txt:

image-20241121133449576

然后依次addcommit。随后我们更改一下file5.txt里的内容,在命令行中输入:

get diff
image-20241121134108115

如果我们add后再输入get diff,这个差异就不见了:

image-20241121134258927

也就是说,git diff这个命令是查看上一次commit之后,这一次add之前的差异。如果想查看上一次commit之后,这一次add之后、commit之前的差异,需要输入:

git diff HEAD
image-20241121134425240

也可以对比add前后的差异:

git diff --cached
image-20241121134739055

也可以查看不同版本的差异。我们先把这个版本commit一下:

image-20241121134944287

然后查看之前的版本号:

image-20241121135009333

我们对比v6和v5的区别,版本号分别为6fc94a042c9e8f7b73ed53fab5bbe83ed27be8e6e8dda090421cfd0f9d59ead9f976b9d79736fc54,输入:

git diff 6fc94a042c9e8f7b73ed53fab5bbe83ed27be8e6 e8dda090421cfd0f9d59ead9f976b9d79736fc54
image-20241121135210039

如果要比较某一版本和当前版本的差异,可以不输入当前版本的版本号,而是用HEAD代替,如:

git diff HEAD e8dda090421cfd0f9d59ead9f976b9d79736fc54
image-20241121135350451

更经常用的命令是比较当前版本和上一版本的差异,输入:

git diff HEAD~ HEAD
image-20241121135441801

这个命令也可以变为:

git diff HEAD~2 HEAD
image-20241121135538995

这是查看当前版本和两个版本之前版本的差异。

也可以单独查看某一个文件的差异,先整体看一下和三个版本之前的差异:

git diff HEAD~3 HEAD
image-20241121135831659

可以看到有很多文件都不同。我们输入:

git diff HEAD~3 HEAD file2.txt
image-20241121135950203

就只显示file2的差异了。

3.4.忽略文件

可以参考这篇博客:[Git 开发必备 .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)

常用的忽略一般是忽略某个目录,一般编译产生的文件都会放在某个文件夹下,这个文件夹我们一般无需上传,将其忽略掉即可。举个例子,这是一个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

假设我们需要忽略Drivers文件夹和MDK-ARM中的RTE文件夹,我们应该如何操作呢?输入:

vi .gitignore
image-20241121142705993

然后输入:

Drivers/
MDK-ARM/RTE/
image-20241121143244272

然后按Esc,输入:wq

image-20241121143602443

即可退出。

看一下状态:

image-20241121143640504

可以看到并没有显示Drivers文件夹。

4.云端配置

4.1.Github

自行创建Github账号。

4.1.1.SSH配置

进入GitHub,创建自己的仓库:

image-20241121151528819

配置如下(注意不要勾选其他内容,否则不会显示引导界面):

image-20241121152240979

然后会进入一个引导界面:

image-20241121160531064

打开Git Bash终端,然后先后输入:

cd
ssh-keygen -t rsa -b 4096
image-20241121154832990

然后需要手动输入一个名称,这个可以直接回车让他自动生成,需要连续回车三下:

image-20241121154944619

然后先后输入:

cd .ssh
ls -ltr
image-20241121155208795

没有后缀的是私钥文件,谁也不要给;有后缀的是公钥文件。输入:

vi id_rsa.pub
image-20241121155604083

复制内容:

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDQiflzS5ow+......PRv86w== Fangzhou Tan@LAPTOP-JQFPEMOQ

回到Github,点击头像,找到Settings:

image-20241121155656706

然后找到SSH配置:

image-20241121155734582

image-20241121155913900

名字是任意的,想是啥就是啥,不用和仓库名一样。

设置好后在引导界面复制SSH:

image-20241121160611652

到本地的文件夹,打开git bash终端,然后输入(注意在输入前要关闭代理):

git clone git@github.com:LengYuuu/Hello_Github.git
image-20241121160645511

需要手动输入yes,即可完成克隆。如下所示:

image-20241121160729308

在文件夹中加点文件:

image-20241121161000294

然后在中断中先后输入:

git add .
git commit -m "first commit"
git push
image-20241121161658945

去Github刷新一下:

image-20241121161725553

成功上传!

4.1.2.关联本地仓库和远程仓库

写不动了实在是,后面再补吧

4.2.Gitee

和Github几乎一样。

4.3.GitLab

私有化部署

暂时不需要私有化部署,也是先挖坑吧。

5.在VSCode中使用Git

5.1.配置Git

如果按照刚刚的步骤下载Git,但是打开VSCode,显示:

image-20241121170434097

那可能是Git的环境变量没有配好。在环境变量中加入:

image-20241121170547883

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

image-20241121170631289

重启VSCode:

image-20241121170704922

如果还是没有找到Git,则点击文件 -> 首选项 -> 设置,搜索 git.path

image-20241121171007819

image-20241121170946768

然后手动设置 Git 的完整路径,例如:

json
"git.path": "C:\\Program Files\\Git\\bin\\git.exe"

然后保存,重启VSCode即可。


未完待续…
先把学完的部分发出来,后面慢慢学慢慢补齐

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2248562.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【SpringBoot】28 API接口防刷(Redis + 拦截器)

Gitee仓库 https://gitee.com/Lin_DH/system 介绍 常用的 API 安全措施包括:防火墙、验证码、鉴权、IP限制、数据加密、限流、监控、网关等,以确保接口的安全性。 常见措施 1)防火墙 防火墙是网络安全中最基本的安全设备之一&#xff0c…

零基础学安全--shell脚本学习(1)脚本创建执行及变量使用

目录 学习连接 什么是shell shell的分类 查看当前系统支持shell 学习前提 开始学习 第一种执行脚本方法 ​编辑 第二种执行脚本方法 第三种执行脚本方法 变量声明和定义 ​编辑 查看变量 删除变量 学习连接 声明! 学习视频来自B站up主 **泷羽sec** 有兴趣…

基于FPGA的FM调制(载波频率、频偏、峰值、DAC输出)-带仿真文件-上板验证正确

基于FPGA的FM调制-带仿真文件-上板验证正确 前言一、FM调制储备知识载波频率频偏峰值个人理解 二、代码分析1.模块分析2.波形分析 总结 前言 FM、AM等调制是学习FPGA信号处理一个比较好的小项目,通过学习FM调制过程熟悉信号处理的一个简单流程,进而熟悉…

“AI玩手机”原理揭秘:大模型驱动的移动端GUI智能体

作者|郭源 前言 在后LLM时代,随着大语言模型和多模态大模型技术的日益成熟,AI技术的实际应用及其社会价值愈发受到重视。AI智能体(AI Agent)技术通过集成行为规划、记忆存储、工具调用等机制,为大模型装上…

路由策略与路由控制实验

AR1、AR2、AR3在互联接口、Loopback0接口上激活OSPF。AR3、AR4属于IS-IS Area 49.0001,这两者都是Level-1路由器,AR3、AR4的系统ID采用0000.0000.000x格式,其中x为设备编号 AR1上存在三个业务网段A、B、C(分别用Loopback1、2、3接…

uniapp开发微信小程序笔记8-uniapp使用vant框架

前言:其实用uni-app开发微信小程序的首选不应该是vant,因为vant没有专门给uni-app设置专栏,可以看到目前Vant 官方提供了 Vue 2 版本、Vue 3 版本和微信小程序版本,并由社区团队维护 React 版本和支付宝小程序版本。 但是vant的优…

Qt-系统相关(1)事件文件

Qt事件 事件介绍 事件是应⽤程序内部或者外部产⽣的事情或者动作的统称。在 Qt 中使⽤⼀个对象来表⽰⼀个事件。所有的 Qt 事件均继承于抽象类 QEvent。事件是由系统或者 Qt 平台本⾝在不同的时刻发出的。当⽤⼾按下⿏标、敲下键盘,或者是窗⼝需要重新绘制的时候&a…

HarmonyOS4+NEXT星河版入门与项目实战(20)------状态管理@ObjectLink @Observed

文章目录 1、用法图解2、案例实现1、任务类改造2、参数改造变量3、完整代码4、运行效果4、总结1、用法图解 2、案例实现 上一节的案例中,一直有一个功能没有生效,就是任务完成后对应的任务行变灰,任务字体出现中划线删除的效果。而该功能一直不生效的原因就是要改变的数据值…

【小白学机器学习36】关于独立概率,联合概率,交叉概率,交叉概率和,总概率等 概念辨析的例子

目录 1 先说结论 2 联合概率 3 边缘概率 4 (行/列)边缘概率的和 总概率1 5 条件概率 5.1 条件概率的除法公式 5.2 条件概率和联合概率区别 1 先说结论 关于独立概率,联合概率,交叉概率,交叉概率和,总概率 类型含义 …

TCP IP协议和网络安全

传输层的两个协议: 可靠传输 TCP 分段传输 建立对话(消耗系统资源) 丢失重传netstat -n 不可靠传输 UDP 一个数据包就能表达完整的意思或屏幕广播 应用层协议(默认端口): httpTCP80 网页 ftpTCP21验证用户身…

redmi 12c 刷机

刷机历程 一个多月前网购了redmi 12c这款手机, 价格只有550,用来搞机再适合不过了, 拆快递后就开始倒腾,网上有人说需要等7天才能解锁,我绑定了账号过了几天又忍不住倒腾,最后发现这块手机不用等7天解锁成功了,开始我为了获取root权限, 刷入了很火的magisk,但是某一天仍然发现/…

分布式在线评测系统

OnlineJudge 前言所用技术开发环境 1. 需求分析2. 项目宏观结构3. compile_server服务设计3.1 compiler服务设计3.2 runner服务设计3.3 compile_run3.4 compile_server.cpp 4. oj_server服务设计4.1 model设计4.2 view设计4.3 control设计4.3.1 获取题目列表功能4.3.2 获取单个…

政安晨【零基础玩转各类开源AI项目】探索Cursor-AI Coder的应用实例

目录 Cusor的主要特点 Cusor实操 政安晨的个人主页:政安晨 欢迎 👍点赞✍评论⭐收藏 希望政安晨的博客能够对您有所裨益,如有不足之处,欢迎在评论区提出指正! Cursor 是 Visual Studio Code 的一个分支。这使我们能够…

第三届航空航天与控制工程国际 (ICoACE 2024)

重要信息 会议官网:www.icoace.com 线下召开:2024年11月29日-12月1日 会议地点:陕西西安理工大学金花校区 (西安市金花南路5号) 大会简介 2024年第三届航空航天与控制工程国际学术会议(ICoACE 2024&a…

Vue前端开发2.3.5 条件渲染指令

本文介绍了Vue中两种条件渲染指令:v-if和v-show。v-if通过布尔值控制元素的DOM树存在,适用于不频繁切换显示状态的场景;v-show则通过CSS的display属性控制显示,适合频繁切换。通过创建单文件组件示例,演示了如何使用这…

初级数据结构——二叉树题库(c++)

这里写目录标题 前言[1.——965. 单值二叉树](https://leetcode.cn/problems/univalued-binary-tree/)[2.——222. 完全二叉树的节点个数](https://leetcode.cn/problems/count-complete-tree-nodes/)[3.——144. 二叉树的前序遍历](https://leetcode.cn/problems/binary-tree-…

Java基础——(一)Java概述

Java特性 简单性:Java与C很相似,但剔除了C中许多比较复杂并且很少使用的功能,比如头文件、指针运算、结构、联合、操作符重载、虚基类等,从而使Java更易于上手、学习。面向对象:Java是一门面向对象语言,具…

打造智能化在线教育平台详解:教培网校APP的架构设计与实现

本篇文章,小编将以教培网校APP的架构设计与实现为核心,深入探讨如何打造一套智能化的在线教育平台,为企业和教育机构提供落地参考。 一、在线教育平台的核心功能需求 构建一个高效的教培网校APP,首先需要明确其核心功能需求。一…

Java学习笔记--继承的介绍,基本使用,成员变量和成员方法访问特点

目录 一,继承 1.什么是继承 2.怎么去继承: 3.注意: 4.继承怎么学 二,继承基本使用 三,成员变量和成员方法访问特点 1.成员变量访问特点 1,子类和父类中的成员变量不重名: 总结: 2,子类和父类中的成员变量重…

IDEA2024创建一个spingboot项目

以下是创建一个基本的 Spring Boot 项目的步骤和示例: 初始化一个springboot工程其实有许多方法,笔者这里挑了一个最快捷的方式搭建一个项目。我们直接通过官方平台(start.spring.io)进行配置,然后下载压缩包就可以获取…