Git入门与使用 (二) Git相关命令的介绍与使用

2023-11-13

文章目录


一、前言

  在上一篇文章中已经对Git进行了基本的介绍和下载安装的讲解,下面正式进入到Git相关命令的介绍与使用的讲解。



二、理解Git的工作区、暂存区、本地仓库和远程仓库


Workspace:工作区,在新建的文件夹内,使用命令git init初始化一个Git仓库之后,那么当前文件夹就可以称为是工作区,同时对项目代码的相关操作都发生在工作区里面,工作区内的文件是可以看见的,当然这个工作区不包括初始仓库生成的.git文件夹

Index / Stage:暂存区,用于存储工作区中添加上来的变更(新增、修改、删除)的文件的地方,操作时,在项目目录下使用命令git add fileName就可以把文件存入到暂存区,这里的fileName是指要往暂存区添加的文件名,当然也可以使用.代表当前的整个目录,即:git add .会将工作区中所有新增、变更、删除过的文件的情况存入暂存区中。git status命令可以查看缓存区有什么文件。

Repository:本地仓库又称版本库(即:.git文件夹),用于存储本地工作区和暂存区提交上来的变更(新增、修改、删除)过的文件的地方。操作时,使用命令git commit –m “本次操作的相关描述” 就可以将添加到暂存区的变更文件提交到本地仓库中,其中Git本地仓库里存在很多东西,其中最为重要的是stage(或者叫index)的暂存区。还有Git为我们自动创建的第一个分支master,以及指向master的第一个指针HEAD

Remote:远程仓库,简单来说,就是我们工作过程中,当某一个人的开发工作完毕时,需要将自己开发的功能合并到主项目中去,但因为功能是多人开发,如果不能妥善保管好主项目中存储的代码及文件的话,将会存在丢失等情况出现,所以不能将主项目放到某一个人的本地电脑上,这时就需要有一个地方存储主项目,这个地方就是我们搭建在服务器上的git远程仓库,也就是在功能开始开发前,每个人要下载项目到本地的地方。操作时,使用命令git push origin 分支名称,将本次仓库存储的当前分支的修改推送至远程仓库中的对应分支中。

三、Git相关命令的介绍与使用

1、初始化Git仓库

git init

如果需要使用Git对文件夹内的文本文档进行版本管理,那么就必须进行Git仓库初始化。新建一个文件夹,进入到文件夹内,鼠标右键,选择Git Bash Here,进入到Git命令终端,使用git init命令初始化Git仓库

当出现Initialized empty Git repository in G:/depot/.git/信息时,则表示Git仓库初始化成功,同时会在当前文件夹下生成一个.git的隐藏文件夹,这个.git文件夹里存储着管理当前目录内容所需的仓库数据。由于windows下默认是不显示隐藏的文件夹,需要我们在查看选项中,点击勾选隐藏的项目,才能看到.git文件夹。
注意.git文件夹里存储着管理当前目录内容所需的仓库数据,不要删除,也不要胡乱修改


2、设置签名

设置签名,用于区分不同开发人员的身份,签名级别 分为仓库/项目级别 和 系统用户级别两种,其作用范围如下所示:

  • 仓库/项目级别:仅在当前本地库范围内有效
  • 系统用户级别:当前操作系统的用户范围内有效

设置为仓库/项目级别,我们需要在每个新建的Git仓库下都设置一遍,但是如果只是你自己用,设置为系统用户级别就可以了,如果两者都设置了,则优先使用仓库/项目级别。

2.1、设置仓库/项目级别的签名
//1、设置用户名
git config user.name 你的用户名

//2、设置邮箱
git config user.email 你的邮箱

//3、查看配置信息
cat .git/config

注意:修改用户名和邮箱命令 和 设置用户名和邮箱命令一样,即:没有设置用户名和邮箱,则设置用户名和邮箱,有用户名和邮箱则修改用户名和邮箱



2.2、设置系统用户级别的签名
//1、设置用户名
git config --global user.name 你的用户名

//2、设置邮箱
git config --global user.email 你的邮箱

//3、查看配置信息
cat ~/.gitconfig

注意:修改用户名和邮箱命令 和 设置用户名和邮箱命令一样,即:没有设置用户名和邮箱,则设置用户名和邮箱,有用户名和邮箱则修改用户名和邮箱



3、查看Git仓库的状态

//查看当前工作区 和 暂存区某个文件的状态
git status filename

//查看当前工作区 和 暂存区所有文件的状态
git status

//查看当前工作区 和 暂存区所有文件的详细状态列表
git status -s

  • On branch master:由于我们刚初始化仓库,没有进行相关分支切换操作,所以默认正处在master分支下,即:主分支下。

  • No commits yet:表示本地仓库没有提交的内容

  • nothing to commit (create/copy files and use "git add" to track):表示暂存区没有可以提交的东西

现在我们在当前工作区中,新建一个名为lemon.txt的文件,并添加一些内容,作为被管理的对象,当然任何文本文件都是可以被管理的,然后尝试使用命令git status filename来观察某个文件的状态

添加完新文件之后,仓库的状态变了,显示的是Untracked files,表示当前有未被追踪的文件lemon.txt(这里有一个小细节,那就是新添加的lemon.txt还未被Git管理的时候,显示的是红色,后面使用到IntelliJ IDEA的时候,新创建的*.java未被管理之前,文件显示也将是红色,所以根据颜色也可以判断当前文件的状态)。类似地,只要对Git的工作区或者暂存区进行相关操作,git status命令的显示结果都会发生变化。

文件的四种状态,如下图所示:

  • Untracked:未跟踪,表示此文件在工作区中,但是并没有添加到暂存区中,通过git add fileName 命令,把文件添加到暂存区,这里的fileName是指要往暂存区添加的文件名,使文件状态由Untracked(未暂存) → Staged(已暂存)

  • Unmodified:未修改,即:本地仓库与工作区的内容一致,如果文件被修改,则文件状态由Unmodified(未修改) → Modified(已修改)

  • Modified:已修改, 仅仅只是修改, 并没有进行其他的操作,这时文件的状态可以有两种变化,一是通过使用命令git add fileName,文件状态由Modified(已修改) → Staged(已暂存),二是通过使用命令git checkout -- fiilename丢弃修改内容,即:从本地仓库取出最新内容,覆盖当前修改,文件状态由Modified(已修改) → Unmodified(未修改)

  • Staged:已暂存,这时文件的状态可以有两种变化,一是执行git commit命令则可以将修改的文件同步到本地仓库中,这时本地仓库与工作区的内容一致,文件状态由Staged(已暂存) → Unmodified(未修改),二是执行git reset HEAD filename命令取消暂存,文件状态由Staged(已暂存) → Untracked(未暂存)


4、向暂存区添加文件

如果我们只是在工作区中添加或者修改了文件,那么这个文件将不会被Git管理,换句话说就是无法进行版本管理,那么添加、修改完文件,需要将其用Git管理起来,就需要使用到git add命令。git add后面的参数可以是一个文件夹,可以是一个文件,或者是某一类文件(*.java)等。

//1、将工作区的某个文件添加到暂存区,filename是指要往暂存区添加的文件名
git add filename

//2、将工作区中所有新增、变更、删除过的文件添加到暂存区中
git add .


添加完之后,再次查看仓库状态,又发生了变化,显示的是Changes to be committed,表示未提交的修改(这里有一个小细节,未提交修改的文件显示的是绿色,后期在IntelliJ IDEA中显示绿色的文件*.java表示修改后添加了索引但还未提交)。这里还显示了可以使用命令git rm --cached filename来撤销已添加到暂存区的文件。

5、撤销操作

5.1、撤销工作区中的改动的文件内容

前提:在撤销工作区中的新增内容的文件之前,该文件必须进行过添加索引操作,即:添加到暂存区,否则就没有所谓的恢复,因为暂存区中没有内容,也就没有所谓的恢复

//拉取暂存区的文件,并将其替换成工作区的文件
git checkout -- filename

由于上一步,我们已经将lemon.txt文件添加到暂存区,这时我们再来修改lemon.txt文件,往其中加入一些内容,来进行撤销测试

可以看到,我们往lemon.txt文件中新增了一行bbbbb内容,通过git checkout -- lemon.txtlemon.txt文件又撤回到了原先提交到暂存区只有一行aaaaa内容的文件状态。

5.2、撤销已添加到暂存区的文件
git rm --cached filename


可以看到lemon.txt文件的状态和之前新建lemon.txt文件到工作区的状态一摸一样。注意:这里只会移除添加到暂存区的文件,不会影响到工作区中的文件。

6、提交文件到本地仓库

6.1、记录一行提交信息

git commit命令是提交命令,是将已经添加到暂存区的文件提交到本地仓库的历史记录中,通过这些记录,就可以在日后的某一天将此时的文件状态进行恢复。

注意:由于上一步操作,把lemon.txt文件移除了暂存区,需要先使用git add lemon.txt命令将其添加到暂存区,然后在使用git commit -m "提交信息" lemon.txt命令提交。

//参数-m之后是提交的信息,一般都是记录当前修改的内容等。
git commit -m "提交信息" filename


这时,我们就将lemon.txt文件提交到了本地仓库中,同时记录了一条日志,1 file changed, 1 insertion(+) 表示一个文件被更改,添加了一行内容。同时查看Git仓库状态,显示的是nothing to commit, working tree clean,表示此时工作区 和 本地仓库的内容是一致的,暂存区也没有什么要提交的内容。

6.2、记录 多条/详细 提交信息

有时候,我们提交的代码仅仅一行提交信息是难以描述清楚本次修改的具体内容,所以需要写多行描述信息,那么我们可以直接使用git commit filename命令来完成多行提交信息的记录。在此之前,我们在刚才测试的lemon.txt文件中添加一些内容,然后重新提交,测试多行描述信息编写的功能,最后测试git commit filename命令。

注意:对lemon.txt文件添加了一些内容之后,必须先使用git add lemon.txt命令将其添加到暂存区,才可以进行提交。

//启动Vim文本编辑器写提交信息,可以记录 多条/详细 提交信息
git commit filename                   

使用git commit filename命令提交多条信息时,会自动启用Vim文本编辑器进行多条信息的提交,其信息提交情况如下图所示:


7、查看当前本地仓库提交的日志信息记录

7.1、查看文件提交的日志信息记录

git log是一个很重要的命令,使用它可以查看当前本地仓库提交的日志信息,通过日志信息可以很方便查看何人在何时对代码进行了提交和合并,以及提交前后的区别。

//查看当前本地仓库所有文件的提交日志信息
git log

//查看当前本地仓库指定文件的提交日志信息
git log filename

使用git log lemon.txt查看刚才lemon.txt文件被提交的两次日志信息,如下图所示:

上图中显示了两次提交的详细日志,包括 HEAD(指向当前最新提交的内容)和 commit(黄色内容部分,即:指向相应提交的hash值),这个hash值是唯一代表本次提交,使用这个hash值可以轻松回退到指定的版本。上图上还显示了本次提交的作者和日期时间以及提交时编辑的具体提交说明内容。

当日志记录超过一页时,这是我们可以通过如下操作进行日志的查看:

  • 空格:查看下一页日志信息
  • b:查看上一页日志信息
  • q:退出查看日志信息操作

7.2、以图表方式查看文件提交的日志信息记录
//以图表的方式查看当前本地仓库所有文件的提交日志信息
git log --graph

//以图表的方式查看当前本地仓库指定文件的提交日志信息
git log --graph filename



7.3、以简短方式查看文件提交的日志信息记录
//查看当前本地仓库所有文件的提交日志信息,以简短方式显示日志
git log --pretty=oneline/--oneline

//查看当前本地仓库指定文件的提交日志信息,以简短方式显示日志
git log --pretty=oneline/--oneline filename

上图中以简短的方式显示了两次提交的详细日志,其中包括 commit id(黄色内容部分,即:指向相应提交的hash值)、HEAD(指向当前最新提交的内容)和 提交时编辑的具体提交说明内容。

7.4、查看文件所有操作的提交日志信息记录
//查看当前本地仓库所有文件操作的提交日志信息,
git reflog

//查看当前本地仓库指定文件操作的提交日志信息,
git reflog filename


上图中同样以简短的方式显示了两次提交的详细日志,其中包括 commit id(黄色内容部分,即:指向相应提交的hash值的前7位数)、HEAD(指向当前最新提交的内容)、HEAD@{HEAD指针指向相关提交版本需要移动的步数} 和 提交时编辑的具体提交说明内容。

git log 与 git reflog的区别:

  • git log:显示所以提交过的版本信息,但不包括已经被删除的 commit 记录和 reset 操作记录

  • git reflog:显示所有的操作记录,包括已经被删除的 commit 记录和 reset 操作记录,常用于恢复本地的错误操作,即版本回退操作。

8、修改提交的日志信息

当我们第一次提交代码的时候,提交的日志信息可能是完全根据我们自己的意愿来写的,但是呢,公司往往对代码提交的日志信息格式有要求,比如需要加上一些特殊符号等,所以我们偶尔会需要修改提交的日志信息,那么使用命令git commit --amend就可以进行修改了。

git commit --amend

使用该命令之后,就可以对上一次提交的日志信息进行修改了,进入Vim编辑器之后就可以修改其中的日志信息了。


可以看到我们上一次提交的日志信息由第二次提交lemon.txt文件; 新增一行内容bbbbb到lemon.txt文件中。 修改成 第二次提交lemon.txt文件; 修改日志信息,新增一行内容bbbbb到lemon.txt文件中。


9、压缩提交的日志信息

当提交完代码之后,发现代码的部分注释或者其他不太紧要的内容有些错误,大多数人的做法是撤销本次提交,再次修改后重新提交,其实还有一种比较常见的操作,那就是修改部分错误,重新提交,然后将这次提交包含到前一个提交之中,压缩成一个提交记录,这样的效果就是没有多余的提交记录,看起来就是这个小错误从来没发生过一样。这个小技巧也是很常用的小技巧,我们来测试一下。

//压缩最近的n次提交的日志信息
git rebase -i HEAD~n


上图中lemon.txt文件的最后一行,我们错把read单词拼写成了raed单词,并对文件进行了添加索引和提交操作。对应上面制造出来的问题,我们对其进行修改并再次提交。

由于对lemon.txt文件进行了两次提交,所以在历史记录中就有两次提交的记录,但是对于第二次提交,健全的历史记录并不需要它们,所以我们希望将这两次提交记录合并成为一条记录,那么使用Git的相关命令轻松可以做到。首先我们查看两次提交的日志记录:

我们使用命令git rebase -i HEAD~2来将两次提交合并,输入命令之后,会打开编辑器,我们将第二次提交的记录前面的pick改成fixup即可,就完成了两次提交记录的合并,后面可以通过查看日志来确认一下。

修改完成之后,就会出现一行Successfully rebased and updated refs/heads/master.的温馨提示,同时lemon.txt文件中最后一行的单词拼写错误也被改过来了。
在这里插入图片描述
我们再次查看日志,可以发现两次提交成功合并成为一次提交了,且这次提交的commit id (即:hash值) 也和之前的都不一样了。


10、版本的前进与回退

在日常的工作中,我们对某些文件进行了git commit操作,但是提交之后发现某些文件内容有误,这时我们就可以已经提交到本地仓库的文件使用git reset命令进行撤销或回退,即:撤销当前提交操作 或 回退到上一次文件提交的状态,其操作有如下三种方式:

10.1、基于hash值进行操作 (推荐)
git reset --hard 局部hash值(即:hash值的前7位数)

由于之前添加的两条日志记录,不够我们来测试版本的前进与回退,所以我又多添加了几条日志记录来进行相关测试

上图中可以看到,我们使用局部hash值由insert kkkkk into lemon.txt版本回退到了insert hhhhh into lemon.txt版本。

10.2、使用^符号进行操作
//一个^表示回退一步,n个^表示回退n步
git reset --hard HEAD^


上图中可以看到,我们使用了HEAD^^两个^符号,回退了两步,由insert hhhhh into lemon.txt版本回退到了insert fffff into lemon.txt版本,注意:该方式只能回退不能前进

10.3、使用~符号进行操作
//n表示回退的步数
git reset --hard HEAD~n


上图中可以看到,我们使用了HEAD~2,回退了两步,由insert fffff into lemon.txt版本回退到了insert ddddd into lemon.txt版本,注意:该方式只能回退不能前进

10.4、git reset命令的三个参数的对比
  • git reset --soft [commit id或者HEAD]:仅仅只会回退本地仓库中的内容(即:git commit提交的内容),不会影响到暂存区工作区中的内容。如果回退之后还要提交,可以直接使用git commit命令提交到本地仓库即可。

  • git reset --mixed [commit id或者HEAD]:此为默认方式,不带任何参数的git reset,默认就是这种方式,它会回退本地仓库中的内容(即:git commit提交的内容) 和 暂存区中的内容(即:git add提交的内容),不会影响到工作区中的内容。

  • git reset --hard [commit id或者HEAD]本地仓库暂存区工作区全部回退到指定版本的内容。

11、删除文件并找回

前提:文件删除前,其文件存在时的状态已经提交到了本地仓库

11.1、找回删除文件操作已经提交到本地仓库的文件
git reset --hard 文件存在时版本的局部hash值(即:hash值的前7位数)

1、首先,我们新建一个data.txt文件,并添加到本地仓库中

2、删除新建一个data.txt文件,并添加到本地仓库中

3、回退到data.txt文件存在的版本历史记录,找回删除的data.txt文件


11.2、找回删除文件操作已添加到暂存区但尚未提交到本地仓库的文件
git reset --hard HEAD/文件存在时版本的局部hash值(即:hash值的前7位数)

1、还是以data.txt文件为例,删除data.txt文件并添加到暂存区中

2、回退到data.txt文件存在的版本历史记录,找回删除的data.txt文件


12、查看文件更改前后的差别

git diff可以查看工作区、暂存区(index)和 本地仓库(HEAD)之间的差别,可以使用该命令查看自己在代码中修改了一些什么内容,接下来就让我们来看一下如何使用它吧。

12.1、查看工作区与暂存区文件的差别
git diff filename

我们在data.txt文件中添加一行内容,并使用git diff data.txt查看查看工作区与暂存区文件的差别。

从上图可以看出,工作区中的data.txt文件的内容相较于暂存区增加了一行。我们再次将data.txt文件添加到暂存区时,然后使用git diff data.txt命令进行比较,结果没有任何显示,说明工作区和暂存区中的文data.txt件没有任何差别。

12.2、查看工作区与本地仓库文件的差别
git diff HEAD filename

接着上面的操作,我们使用git diff HEAD data.txt命令查看工作区与本地仓库文件的差别

可以看到与data.txt未提交到暂存区显示的结果是一样的,很容易理解,这是因为我们并没有把data.txt文件使用git commit data.txt命令提交到本地仓库,所以显示的结果与data.txt未提交到暂存区是一样的。

13、分支操作

使用Git来进行代码托管,主要是为了方便团队的合作开发与并行开发。在并行开发过程中,往往存在多个分支,且各个分支的代码进度都不一样,开发的内容也不一样,比如develop分支是开发分支,feature是新功能开发分支,master是主分支。对于分支的操作,大多都是新建分支、切换分支、合并分支等操作。同时各个分支完全可以独立开发,等分支作业完成之后,再与主分支mater合并,共同推进项目前进。


13.1、分支的查看
git branch -v


可以看到,当前本地只有一个master主分支,前面的*号表示我们当前正处在master主分支下。

13.2、分支的创建
git branch 新分支名 [master]

后面中括号的内容可以省略,即:默认是以当前分支为基础,创建新的分支,其中新分支的内容 与 当前分支的内容是一致的,其中master可以换成远程分支,这样就可以在本地以远程分支为基础创建一个新的分支。

可以看到我们以当前分支master创建了一个名叫feature的新分支,同时新分支中的内容与当前分支master的内容是一致的

13.3、分支的切换
git checkout 新分支名

//创建并切换分支
git checkout -b 新分支名 [master]
相当于
git branch 新分支名
git checkout 新分支名


可以看到我们已经由主分支master切换到新分支feature

13.4、分支的删除
//删除分支
git branch –d 分支名

//强制删除本地分支
git branch –D 分支名

//删除服务器远端的分支
git push origin --delete 分支名


由于我们当前处在feature分支上,所以需要先切换到master分支下,再去删除新分支feature分支。

13.5、分支的合并

在实际的项目开发中,往往需要对项目增加一些新的功能,但是在master主干分支下进行新功能开发的话,又怕新增加的功能对master主干分支原有的功能产生影响,所以这时我们需要创建一个特性分支特性分支一般都是为了完成某项特殊功能的分支,特性分支大多都是从主分支上新建而来,然后待特性分支开发完成之后再合并到主分支上。

git merge 合并的分支名

//该命令可以将分支与合并的操作的日志给记录下来,方便后续使用给git log --graph命令进行查看 (推荐)
git merge --no-ff 合并的分支名

1、由于上一步操作,我们把新创建的分支feature给删除了,这时我们重新创建feature分支,并在feature分支中对data.txt文件添加新内容 (添加的内容不影响其他分支),然后把它添加到暂存区,再提交到本地仓库中


2、把feature分支并到master主分支上

注意:需要合并到哪个分支上,就需要先切换到哪个分支上,例如我们需要把feature分支合并到master主分支上,我们就需要先切换到master主分支上,然后在进行合并操作。

可以看到,master主分支下的data.txt文件也新增了一行bbbbb from feature的内容,同时使用git log --graph命令,可以查看到分支与合并的操作的日志记录,这就是在合并时参数--no-ff的作用,--no-ff指的是强行关闭fast-forward方式,fast-forward方式就是当条件允许的时候,git直接把HEAD指针指向合并分支的头,完成合并。属于“快进方式”,不过这种情况如果删除分支,则会丢失分支信息,因为在这个过程中没有进行git commit操作。


14、冲突的解决

14.1、冲突的产生

    由于多个分支对同一个文件的内容进行了修改,并都做了相应的提交操作,此时在进行分支的合并操作时,每个分支的同一个文件的内容都是不一样的,这就导致在合并时Git拿不定主意,即:不知道该用哪个分支的文件内容,这就导致了冲突的产生。

14.2、解决分支合并时产生的冲突

1、首先,我们切换到feature分支下,对feature分支下的lemon.txt文件进行相应的修改并提交到本地仓库

可以看到,我们将feature分支下的lemon.txt文件中的bbbbb 修改为 bbbbb from feature,并提交到了本地仓库中。

2、我们切换到master分支下,对master分支下的lemon.txt文件的同一处地方进行相应的修改并提交到本地仓库

可以看到,我们对master分支下的lemon.txt文件中的同一处地方进行了修改,由bbbbb 修改为 bbbbb from master,并提交到了本地仓库中。

3、将feature分支合并到master分支中,由于我们已经处于master分支下,所以不需要再切换到master分支

从上图可以看到一条提示信息Automatic merge failed; fix conflicts and then commit the result.,系统告诉我们分支合并失败了,原因是产生了冲突,需要我们手动解决冲突,然后提交结果。我们使用Vim编辑器打开产生冲突的lemon.txt文件,显示的内容如下所示:

<<<<<<< HEAD=======之间的内容是我们当前被合并的分支内容,即:master分支的内容,而=======>>>>>>> feature之间的内容是合并分支的内容,即:feature分支的内容,我们将lemon.txt文件的内容修改成我们想要的内容,删除<<<<<<< HEAD=======>>>>>>> feature,修改完成之后的内容为:


4、重新将lemon.txt文件提交到暂存区,然后提交到本地仓库中

这样,冲突就被我们给解决了,不过需要注意的是,以往我们在进行提交操作时,都习惯在提交命令后带上文件名,即:git commit -m "提交信息" filename,但是在进行冲突的提交时,是不能够带上文件名的,即:git commit -m "提交信息",不然会提示:fatal:cannot do a partial commit during a merge.的错误信息,这点需要特别注意。



Git入门与使用系列文章列表:

Git入门与使用 (一) Git介绍与安装
Git入门与使用 (二) Git相关命令的介绍与使用
Git入门与使用 (三) 使用GitHub进行代码托管的相关操作
Git入门与使用 (四) IDEA集成Git,并通过图形化界面进行Git相关操作
Git入门与使用 (五) GitLab介绍与安装




本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Git入门与使用 (二) Git相关命令的介绍与使用 的相关文章

  • 常用中间件控制台默认登陆

    以下用本地127 0 0 1作为ip前缀方便本地直接点击跳转使用 实际部署时替换该ip即可 中间件名称 访问地址端口 默认账号密码 rabbitmq http 127 0 0 1 15672 guest guest activemq htt
  • 有各组方差怎么算组间平方和_组内离差平方和,组间离差平方和与总离差平方和各反映了什么?...

    展开全部 组内离差平方和反映了试验过程中各种随机因素所引起32313133353236313431303231363533e59b9ee7ad9431333431353331的试验误差 组间离差平方和反映了各组样本之间的差异程度 即由变异因
  • TortoiseGit密钥配置图文教程

    1 在 开始菜单 中找到 TortoiseGit 下的 PuTTYgen 建议直接搜索PuTTYgen 单机运行 2 点击 Generate按钮 鼠标需要在 Key区域 活动直至绿色进度条完成 切记 鼠标一定要动哦 鼠标不动的时候 绿色进度
  • 华为HCS之私有云工具FCD搭建

    华为HCS之私有云工具FCD搭建 一 FCD虚拟机创建 1 选择Vmware版本 2 选择虚拟机操作系统版本 3 虚拟机cpu配置 4 虚拟机分配内存 5 选择磁盘大小 6 指定镜像目录 7 开机安装系统 二 系统的初始配置 1 IP配置
  • Java文件的读写

    文件与流 在实际生活中 我们总要对文件进行操作 Java提供了流可以帮助我们读写文件 下面是常用的流类型结构图 在对文件的读写操作中 字节流可用于读写二进制文件 字符流用于读写文本文件 所谓二进制文件 指文件无字符编码格式 均由字节 Byt
  • SpringBoot--基础--02--配置属性

    SpringBoot 基础 02 加载配置 代码位置 https gitee com DanShenGuiZu learnDemo tree mysql mybaties DB springboot learn springboot 1 1
  • springboot整合Swagger2 被拦截问题解决

    springboot整合Swagger2 被拦截问题解决 本来是想整合swagger3 弄了3个依赖进来 就一直注入不进来 推测版本的问题 springboot公司项目是2 0 6的 就先把swagger3降到2 项目用的是OAuth2 就
  • 程序员/媛的日常——coding/debugging/查bug/改bug

    程序员 媛的日常 coding debugging 查bug 改bug 一 在面对失误而带来的指责和沮丧时 你是如何做的 二 发生了失误之后 你是如何找到问题的 如何避免只看到表面现象而忽略了根本问题 三 在工作中我们应该怎么做才能降低失误
  • 矩阵分析

    看了这个视频后觉得自己是个没有学习过线代的人啊 感谢七月算法讲解的矩阵应用 本篇博文完全用作个人学习笔记 一 我们通过图形化来描述一下矩阵的行列和转置间的关系和特性 1 矩阵的行视图 我们以矩阵的每一行为组合 会得到一个几何图案 比如下图中
  • 深度学习初探——yolov3经典目标检测算法

    提示 文章写完后 目录可以自动生成 如何生成可参考右边的帮助文档 目录 前言 一 yolov3的网络结构 二 利用Darknet 53进行特征提取 1 残差网络 2 代码实现 三 利用FPN特征金字塔进行特征增强和预测输出 1 利用FPN特
  • LeetCode 面试最热100题 跳跃游戏

    作者 Linux猿 简介 CSDN博客专家 华为云享专家 Linux C C 云计算 物联网 面试 刷题 算法尽管咨询我 关注我 有问题私聊 关注专栏 点击关注 LeetCode面试必备100题 专栏 优质好文持续更新中 目录 一 题目描述
  • python3解决读取到的邮件中的乱码问题

    点进来看这篇文章的你 是不是有这种情况 不管用什么模块去读取邮箱中的邮件 都能看到类似 gb18030 B 1vfM4g 这样的仿佛像乱码一样的东西 你比如说这样子的 X QQ FEAT YSSoAXAEBlFn3rgysgiXLVc6JA
  • 关于虚拟机下Linux的opencv获取摄像头图像问题

    最近在虚拟机Ubuntu14 04下运行PTAM 配置过程参考 http makaidong com zhuquan945 1 129074 12259634 html 在最后运行时想使用购买外接USB摄像头 YUYV 进行实验 但发现怎么
  • 搭建Hexo博客+部署到Github

    前言 本文章灵感来源于B站up主codesheep 以及视频评论区里的课代表的博客 为了学习总结经验 经过一定修改和总结后写下了这篇文章 感谢他们的指导 目录 前言 一 准备工作 安装Node js 和 Git 1 安装Node js 2
  • 欧姆龙 CJ1W-SCU 无协议功能

  • dcdiag诊断域控制信息注解

    Domain Controller Diagnosis Performing initial setup 初始化安装 Verifying that the local machine test w301 is a DC 检验目标主机test
  • 混淆代码总结

    混淆代码网址很棒的网址 1 Android项目实战 二十五 Android studio 混淆 打包 验证是否成功 2 Android Studio 十一 代码混淆及打包apk 3 Android代码混淆之混淆规则 4 Error warn
  • Docker Desktop Windows 无法启动

    问题描述 windows下安装了Docker Desktop后 无法启动 连界面都不展示 尝试解决 windows组件 一开始以为是没装完整相关组件 把Hyper V组件全部都装上了 还是不行 docker服务 Google搜索相关问题 发

随机推荐

  • Android SurfaceFlinger3 申请Buffer

    本章节思维导图如上 主要讲述了 surafce 测试程序 demo 的第3步中的获取 Buffer 锁定 最关键 并写入 Buffer 的过程 一 概述 该部分代码是在上一章节中 Surface 测试程序源码的精简版 保存了最关键的流程 如
  • 同样的命令在终端执行OK,但是在shell脚本执行失败的原因

    同样的命令在终端执行OK 但是在shell脚本执行失败的原因 你刚用yum或者apt命令安装了一个程序 在终端执行完全OK 但是当你把他放在shell脚本中时候 执行这个shell脚本却报错了 提示找不到这个命令 hahaha 对于新手来说
  • 好好了解一下Cookie(强烈推荐)

    Cookie是由服务器端生成 发送给User Agent 浏览器会将Cookie的key value保存到某个目录下的文本文件内 下次请求同一网站时就发送该Cookie给服务器 对cookie知识感兴趣的朋友一起学习吧 Cookie的诞生
  • 小程序项目实战(七)

    此文章用于总结自己的知识点 有这个项目有兴趣的伙伴可以点击下方链接购买学习小程序音乐项目开发实战 大神coderwhy新课 学习视频教程 腾讯课堂课程简介正在上传 重新上传取消https ke qq com course 4162214ht
  • java+selenium

    selenium 前言 简介 1 安装驱动 2 简单案例走进爬虫 3 seleniumAPI 3 1创建一个可操控的浏览器对象 3 2打开指定页面 3 3定位元素 id定位 name定位 class 定位 link定位 xpath定位 3
  • 支付宝开发问题-“您当前注册的企业账号风险等级过高,根据国家相关法律法则及《支付宝服务协议》规定,我司无法为您提供支付服务”

    这属于支付宝开发最头痛的问题之一 这个问题导致号都开不出来 这个问题最主要的原因是 法人黑了 其他原因 不重要 1 申请前必须拥有经过实名认证的支付宝账户 2 企业或个体工商户可申请 纯个人不能申请 3 需要提供真实有效的营业执照 且支付宝
  • cordova打包命令汇总

    打包命令 1 生成未签名的apk 在项目根目录下 运行命令 cordova build release android 2 生成签名文件 进入platforms android build outputs apk release目录 如果有
  • 本地代码放到服务器上跑

    在学习过程中遇到的问题 在构建推荐系统的过程之中 进行相似度计算的过程之中 由于计算量比较大的原因 你本地跑代码的时间太长 这时候突然想到自己还有一台一直没用的服务器 因此我打算把自己的代码放到服务器上跑 一些定时脚本或者爬虫程序也必须放在
  • MySQL日志文件

    MySQL日志 MySQL 日志记录了 MySQL 数据库日常操作和错误信息 MySQL 有不同类型的日志文件 各自存储了不同类型的 日志 从日志当中可以查询到 MySQL 数据库的运行情况 用户的操作 错误的信息等 目录 MySQL四类日
  • idea开发配置-模板配置

    一 快速生成 1 创建Java类时 自动配置注释 作者 描述 时间等 进入设置页面 中文路径 编辑器 gt 文件和代码模板 gt Include gt File Header 英文路径 Editor gt File and Code Tem
  • vs+qt 给打包程序添加图标

    1 在创建的qt工程文件中添加如下代码 this gt setWindowIcon QIcon new prefix1 ico 设置软件图标 this gt setWindowTitle XXX软件名 设置软件标题 运行后软件的左上角会有图
  • Centos 7.5 安装superset

    一 物理方式安装 Centos 7 5 安装superset 1 环境依赖 首先 sudo dnf install gcc gcc c libffi devel python3 devel python3 pip python3 wheel
  • PHP定时访问api解决方案【已测试通过】

    背景介绍 今天打算做一个数据统计功能 由于数据结构复杂 无法通过存储过程来完成 所以只能开发PHP功能 定时调用该功能以完成数据统计 方案1 创建Windows计划任务 定时执行 bat批处理文件 具体实施方法 先创建一个 bat文件 例如
  • vue2 升级到 vue3 router 动态授权路由 异步加载报错 TypeError: Cannot read properties of undefined (reading ‘apply‘)

    使用 resolve gt require views item component resolve 会报错 TypeError Cannot read properties of undefined reading apply 我的解决历
  • 替换字符串中指定的字符串

    例如下面的例子 有时需要把某个字符串中的部分字符替换成另一个字符 可以使用std string 自带的函数replace replace第一个参数为起点 第二个为替换的长度 第三个为替换为的内容 for auto inventoryStat
  • 跟我学Spring Cloud(2020.0.0-M6版)-01-服务注册与服务发现-Eureka Server

    目录 1 所需要版本 2 创建基于web的Maven项目 SpringCloud 的服务注册中心 3 检查IntelliJ IDEA 的环境配置 4 检查java verison配置 5 检查Edit Configurations配置 6
  • 区块链技术基本概念

    链客 专为开发者而生 有问必答 此文章来自链客区块链技术问答社区 未经允许拒绝转载 区块链技术根本概念 了解这些名词是一个不错的开端 公钥加密系统 Alice有一把公钥和一把私钥 她可以用她的私钥创建数字签名 而Bob可以用她的公钥来验证这
  • 自定义 swap 函数

    背景 STL 中提供了 swap 算法 用于交换两个对象的值 其一般实现方法如下 namespace std template
  • c语言缩进用tab还是空格,程序员编码首行缩进使用Tab键好还是空格好?

    本文转载自CocoaChina 每个程序员都有自己喜欢的编码风格以及编码习惯 那么 问题来了 一个很常用也很简单的问题 让程序员分为两派 编程时 到时是使用Tab按键来进行首行缩进好呢还是敲空格按键好呢 少侠 别急 带老夫给你慢慢分析 Ta
  • Git入门与使用 (二) Git相关命令的介绍与使用

    文章目录 一 前言 二 理解Git的工作区 暂存区 本地仓库和远程仓库 三 Git相关命令的介绍与使用 1 初始化Git仓库 2 设置签名 2 1 设置仓库 项目级别的签名 2 2 设置系统用户级别的签名 3 查看Git仓库的状态 4 向暂