1.git 和 vscode 环境管理:

git下载位置:根据自己的电脑配置进行下载即可:Git - Downloads

比如我的是linux(ubuntu)那么我就选择Linux,并在命令行下敲下来这个:

下载完git后,可以在终端上输入命令: git version 有输出对应的装载的git版本说明安装成功

然后打开vscode吧,以后的操作大多数都是要在vscode中执行的,反正vscode也可以使用终端:

在vscode中打开终端的方法如下:点击终端, 点击新建终端,就会在界面底部出现嵌入到vscode中的终端窗口

如下图所示,新建了一个终端,然后再在这个新的vscode终端中试一下 git version 命令吧:

然后新建一个文件夹:我的文件夹命名为了"git尝试",在vscode中打开这个文件夹,接下来我们的操作会在这里执行

由于git是一个分支管理工具,所以必须明确每次的修改和提交都是谁提供的 ,所以,根据这篇Git 安装配置 | 菜鸟教程 建立了自己的config,对应的用户名和邮箱(与github一致不一致都可以,反正也可以重新设置)

利用 git config –list 命令看下设置的名字和邮箱行不行,没问题的话继续:(我的输出如下:)

 在当前目录下输入 git init 命令,就会在当前文件夹的目录下生成一个名字为.git的隐藏文件夹,这个文件夹会保存我们文件的每个git版本的记录和变化

git init 命令执行后,终端输出如下:)

 我们打开文件夹,查看到,新生成的隐藏文件夹.git内容如下:

2.提交git,提交每次git的commit

初始化之后,我们在git尝试文件夹下面建立一个test.txt文件,并写入一些内容

虽然我们现在在“git尝试“文件夹中确实存在了一个刚刚新建的test.txt文件,但,test.txt其实还没有被记录到git的提交记录中

要使用git add 命令,将文件加入到git版本控制系统中,命令后面要加文件名,如git add test.txt

(下图为两次提交,其中当前文件夹下有test.txt于是成功提交,但当前文件夹中没有ttt.txt,所以提交失败,终端返回fatal(意思应该就是错误,直译是”致命”))

将test.txt文件add到git系统中后,.git文件夹中立即多了一个index的二进制文件

 

注意 git add 命令只是暂时保存,还不会保存提交记录,还要使用git commit命令,用于将刚才(由git add XXX)暂时保存的文件修改提交为一个固定的版本并保存

当键入git commit 命令时,.git文件夹中出现了一些新的内容:

 

(其中index文件加锁,并多出了COMMIT_EDITMSG和.COMMIT_EDITMSG.swp文件)

至于各个文件都是什么含义,这个介绍的很详细了:解析.git文件夹,深入了解git内部原理 - 掘金

然后贴一张上述博客最后对于各个文件夹对应含义的截图 :

大致了解完各个文件夹都是啥,有什么作用后(其实不了解,之后慢慢了解也没啥问题)

继续我们对于文件修改后的提交:

现在,我们已经将新建的test.txt文件git add 暂存完毕,并且键入git commit 命令,这条命令的目的是将刚刚暂存的更改提交(正式写入到)git的版本管理中

键入git commit 命令后,vscode会弹出一个叫nano的编辑器来要求你填写提交说明(git commit)

(下图所示即为弹出的nano编辑器,上面还给了点注释和快捷键参考,其中,”^” 对应 “ctrl” )

【这一点与视频:git、github 保姆级教程入门,工作和协作必备技术,github提交pr - pull request_哔哩哔哩_bilibili中提到VSCode弹出的是vim编辑器不同,因为这个链接的视频可能和我的VSCode版本不同所以弹出的编辑器有一点不同】

nano编辑器的用法在官网上,很直观了,官网网址如下:https://linuxize.com/post/how-to-use-nano-text-editor/

nano的几个常见的用法:

首先不同于vim的模式编辑,nano可以直接编辑信息,在编辑信息后,想保存并退出nano,按“ctrl+o”。 如果这个文件之前不存在,那么当你保存并推出nano时这个文件自动建立。

若只是想退出nano编辑器,则可以按”ctrl+x”,若进行了改动但是未保存,则会提醒是否要保存这些改动.

【当然,可以选择通过修改vscode配置将编辑器由nano修改为vim,

如博客所示: 修改git默认的编辑器nano为vim的方法_桁桁8道的博客-CSDN博客_git nano vim

 我们假设不更改编辑器,继续使用nano,那么,输入git commit 命令后,进入nano编辑器,我们写入了此次更新的总结(即,commit log ,commit log目的是之后版本管理的时候可以一眼看出每个版本都改动了啥),作为示例,我在nano编辑器中写入:“第一版本”作为此次更新的commit log 信息。(如下图所示)

然后键入“ctrl+o”命令,保存对COMMIT_EDITMSG文件的修改并返回,于是进入如下界面,nano确认我们要写入的文件名字:

选择”确认”,因为我们确实是要往COMMIT_EDITMSG文件里写,于是直接回车(enter键),返回到下图所示的界面: 

此时由于我们的修改都已经提交了,所以直接键入“ctrl+x” 离开该界面就可以了,离开界面后,终端提示,commit提交成功,如下图所示: 

 输入git log 命令确认一下 : (如下图所示,终端上就是上述所有的命令,及对应的输出)

于是,至此,完成了一次版本的提交。


【NOTE】版本的提交有很多的方式,上述是最朴素的方式,接下来一一演示快捷版:

快捷操作一:git add .

刚刚的演示中,我们只对一个文件进行修改于是每次的提交只需要git add 后接一个文件就可以了,但当我们一次修改了多个文件时,这样的写法显然不够快捷,解决措施是将add命令改为:“ git add .

这样,一次就可以将前文件夹中所有的文件都加入到暂时保存中,方便接下来的commit提交存储到新的一个版本中

(下图为该语句的演示,我们提交第二版本,但是采用git add . 命令 对当前文件夹中的所有都临时保存方便commit)

键入 ctrl+o

 回车

键入”ctrl+x” 返回,看到终端显示此次的提交修改了啥

键入”git log”验证一下

快捷操作二:git commit -m “XXXXX

我们还可以更加简化这一过程,通过使用” git commit -m “XXXXX” ”命令,就可以跳过nano编辑器直接将git commit附带到提交上,只需要将上述命令中的“XXXXX”环城你想标注的这次提交的commit内容即可,如下图所示:

然后再次git log 检查一下,确认提交和提交commit均已存在 

大部分人都会采用上述的方式提交commit,毕竟比较方便嘛

 VSCode也有可视化的提交方式:

 当我们对文件进行新增时,会在新增的部分由绿色标注,如下图所示的红框,因为们添加了一行”55555555”,所以,对应行被标绿色。同样的,还有标蓝为对该行进行修改等等

然后,我们点击左侧栏的分支按钮,如下图红箭头所示例:

 它显示我们有一个未提交的更改,点击下图所指的文件,会显示原始文件和这一次我们的修改过后的文件的对比(在两个个窗口上,如下图所示,的对比)

 点击下图所示的(1)操作,即提交按钮,然后弹出对话框(2)询问是否要将当前没有咱村的更改咱村并提交,因为刚刚我们没有git add . ,所以没有暂存。现在这一步骤就是可视化地把暂存和提交合并了,所以选择“是”

 然后vscode会在上翻弹出对话框要求你输入此次提交的commit,将git commit 的内容输入即可

我输入的是:“第五次提交”,如下图所示:

然后按回车,这一次的提交就结束了,那么:

 用git log 命令验证一下: 如下图所示(多出来的第四次提交是我自己在尝试命令,没啥用,也就没截图,忽略掉就行)

 PS :有个叫Git History Diff 的插件,可以看所有提交的历史版本,等等,可以试一试



基于第2节我们讲述的git,和git log中的记录,那现在我们有很多的历史版本提交记录,但是我想要选择之前的某个版本怎么办呢

有两种选择,第一种是输入命令git log 后,得到想要返回的版本的commitid

就是下图圈出来的红框部分:

 然后键入 “git reset –hard XXXXX” 就可以回退到对应想要的版本了。

我们在执行了该命令后,可以看到我们的内容也回退到了第四次提交的版本,然后对应修改的内容旁边还有注释告诉我们是谁修改的,还有个修改时间(3小时前),如下图所示:

 但,这也有个问题,由于我们在git reset 命令中参数选择了hard 模式,所以是覆盖式的回退,因此,这导致我们回退到的版本确实是回退成功了,但是,该版本之后的所有历史版本都消失不见了。例如,我们 现在再次尝试git log 会发现只剩下到第四次提交之前的版本,第四次提交之后的版本都被覆盖了

 那有没有不覆盖但是可以任意切换各个版本的方法呢,有的:就是第二种方式,用分支,也就是常说的branch



3. 利用分支branch进行版本管理

首先我们有一个文件夹作为工作文件夹,命名为”git尝试”,在VSCode中打开它,并且打开终端,如下图所示:

然后建立git目录,我们通过git init命令,初始化建立了一个master分支

如下图红框圈出来的地方现在出现了一个master分支:

 如果想多个版本切换,则需要掌握以下几个命令:

1. git branch :列出当下分支目录

最初我们通过init命令,初始化建立了一个master分支,所以,当我们没有新建立分支时,我们只有一个master分支,并且此分支也是当前分支

 

2. git branch XXXX :新建立分支

我们想要手动新建立一个分支,命令为 “git branch XXXX” (其中,XXXX就是新分支的名字)

如下图所示,我建立了一个名字为version1910的新分支,然后由于当前我还处于master分支下,所以当我再次使用git branch 命令查看分支目录时,*还在master处,表明当前我们还在master分支上,但是已经将version1910分支建立出来了

 

 3. git checkout XXXX : 更换分支

当我们想在不同的分支下进行操作时,需要现切换到该分支上才可以进行下一步的操作:

更换分支的命令为:“ git checkout XXXX ” (XXXX即为要更换分支的名字)

例如,我们想向version1910分支中增加一个新文件1910.txt,那么首先我们需要将分支从当前的master更换为version1910,而后向当前的分支(即version1910分支)中增加新文件1910.txt

如下图所示,更换分支成功,终端返回如下:

接着,在VSCode中,可视化操作建立一个新文件1910.txt ,如下图所示(就和平时正常在本地文件夹中建立新文件一样的操作)

使用git add . 和 git commit -m “XXXX”命令对当前目录下的所有文件(即test.txt和1910.txt提交到version1910分支上去)

然后,可以利用命令“ ls” 查看当前分支上的内容 ,如下图所示:

很明显,version1910分支中包含了这两个文件,提交成功。

但是,1910.txt我只是在version1910上提交的,此时的master分支上应该是不存在1910.txt文件爱你的,于是我们转换分支再次查看一下:(以下为上述所有命令的总体截图)

利用”ls” 命令,确认了在master分支上没有1910.txt文件

4. git merge XXX : 合并分支 

合并分支是:将其他分支 合并到 当前分支中

合并分支的命令为:”git merge XXX” (XXX为要merge的branch名字)

git merge XXX” 命令的目的是,将XXX分支合并到当前分支中

比如下图所示,我新建了一个version1930分支,此时的该分支什么都没有。利用git branch 命令验证建立分支成功,并且此时处于master分支中。转换分支到version1930分支,因为我想将master分支合并到version1930分支中,所以操作一定得在当前分支中,即在version1930分支中进行,于是git checkout 到version1930分支中。然后利用merge命令,进行合并,然后利用”ls”命令查看当前分支中的文件内容,确认合并成功。

上述的步骤命令和对应终端输出如下图所示:

但确实,很少有人合并的时候是把master分支合并到其他分支上的。上述这个例子就是为了说明,虽然这种行为有点怪,但是,是可以的。

5. git branch -d XXX : 删除分支

删除分支时注意,一定不能是当前所处分支即为要删除的分支(eg,不能在version1910分支下删除掉version1910分支)

把分支已经合并之后原来的分支就可以删去了,所用到的命令为:“git branch -d XXX” (XXX为要被删除的分支)

由于一般不会选择删除master分支,所以我选择把version1910分支合并到master分支上,并且删除version1910分支:先切换分支目录到master,然后merge。merge成功后用ls命令确认merge成功,然后删除version1910分支。再次git branch确认分支目录

上述的步骤命令和对应终端输出如下图所示:

 总结一下注意事项:【很重要!】

每当我们采用git init命令进行初始化时,会出现一个master分支

然后,我们可以选择新建分支,在新建分支时要注意我们是在哪个分支目录下新建的分支。因为,在A 分支下新建分支B,新建的分支B 就相当于A分支的一个副本,A和B 的内容完全一致:比如,此时我们在master分支下新建了一个叫m1的分支,那么m1分支此时的内容和master分支此时的内容完全一致,相当于此时的m1分支是master分支的一个副本。

进一步,我们会考虑,那对A分支中的内容进行改动(无论是对已有文件的改动还是新建或删除文件)会对B分支会产生影响么?答案是否定的。A B分支的关系仅是 A分支 在创建 B分支 时,B作为 A 的副本,但是这两者对应的存储位置完全不同。也就是说,A分支 对分支内的任何操作都无法影响到 B分支 的内容,同样,B分支 对分支内的任何操作都无法影响到 A分支 的内容。

以上的结论我自己实验测试过,方法如下:首先我们通过 init 拥有了master 分支,然后向master分支中添加一个新文件叫mastertt.txt,然后add commit 。然后在master分支下,新建一个branchm1分支。切换到branchm1分支,用ls确认此时branchm1分支下的内容和master分支内容一模一样。然后,在branchm1分支下,新建一个名字为branchm1tt.txt的文件,add commit 。 然后在branchm1分支下 新建branch1a分支。切换到branch1a分支, 用ls确认此时branch1a分支下的内容和branchm1分支内容一模一样,即都有mastertt.txt和branchm1tt.txt文件。此时,切换到branchm1分支,对mastertt.txt文件进行修改,然后切换到master文件,查看到master分支下的mastertt.txt文件并没有被修改-->这证明从A分支下建立的B分支上的修改无法影响到A分支内容。而后,切换到branch1a分支,发现,branch1a分支下的mastertt.txr文件也没有被修改->这证明在A分支下建立的B分支,即使A分支作修改也无法影响到B分支内容。


ref :

1. git、github 保姆级教程入门,工作和协作必备技术,github提交pr - pull request_哔哩哔哩_bilibili

 2.

Git 教程 | 菜鸟教程

3. 如何将代码上传到github上同步 !!

 使用vscode编辑和提交github仓库代码_Xavier Jiezou的博客-CSDN博客

4. 如何在GitHub中上传图片-----简单易行,步骤超清晰

如何在GitHub中上传图片-----简单易行,步骤超清晰__奶酪的博客-CSDN博客_github 图片

5.  GitHub · 如何创建文件夹

 GitHub · 如何创建文件夹_Mr_Duoduo的博客-CSDN博客_github 文件夹

6. github—如何在README.md文件中添加图片

github—如何在README.md文件中添加图片-阿里云开发者社区

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐