我的git使用心得

------------恢复内容开始------------

本学期有幸选到了孟宁老师的《高级软件工程》这一门课程,听了前几节课程,发现这是一门非常实用的课程,课程的开始便介绍了一些实用工具,如git,vscode的使用。正如课上所介绍的,git作为目前最先进的版本管理系统,对大型的软件开发,起到尤为重要的作用。而作为软件工程师的我们,同样也需要掌握这一门工具。

而本文将由课程内容出发,记录一次我在我的团队里使用gitlab的一次记录。

参考文献:https://mp.weixin.qq.com/s/Km5KuXPETvG0wCGHrvj9Vg 

 


准备工作

首先介绍一下git基本的概念

  • 工作区:就是你在电脑里能看到的目录。
  • 暂存区:英文叫 stage 或 index。一般存放在 .git 目录下的 index 文件(.git/index)中,所以我们把暂存区有时也叫作索引(index)。
  • 版本库:工作区有一个隐藏目录 .git,这个不算工作区,而是 Git 的版本库。

 

 

 

 

本次实验也将围绕我在一个项目组实际开发的过程进行一次git的使用,项目组使用的的代码管理工具是gitlab,所以本次实验也将使在gitlab中完成对一次团队合作

 

 

场景一:Git本地版本库的基本用法

因为之前有使用过git的经验,所以对于git config配置邮箱和用户名不作过多的赘述

1,vscode 以及 git 的下载不做过多的赘述,下载完成后打开vscode,

为了便于开发的便利,不需要每一次都打开使用git bash,所以需要将终端设置为bash

进入设置,打开terminal.integrated将treminal.integrated.shell.windows的地址设置为git bash 的exe的地址。

此时重启vscode 就可以使用bash的终端,而不用每一次都打开git bash

 

 

 

修改完成后如图

2,新建一个文件夹,然后使用git init 命令将其初始化为本地仓库,并使用git log查看

此时本地处于master分支,且工作区很干净没有东西需要提交

 

 

 

 

此时新建文件readme.md然后编辑内容并保存,然后打开vscode的源代码管理工具,发现此时有为跟踪的更改

如图

 

 

 

 

接着使用git add .将修改提交到暂存区,然后使用git status 查看 仓库状态

 

 

 

此时发现,有暂存区里面有修改需要被提交了,是一个new file :readme.md 的文件需要被提交,而在vscode里面也能查看到刚刚暂存的更改。

接下来,使用git commit -m 命令提交更改,再使用git log 查看记录可以发现

 

 

 

此时 修改已经被成功提交,而在log中也记录下这一次操作的名称,以及修改者以及修改时间。

而在此也完成了一次基本的修改提交操作,接下来,便要进入场景二,对远程仓库的操作和使用,

 

 


 

 

场景二:Git远程版本库的基本用法

由于我所在的项目组使用的是gitlab,进入项目组的gitlab网址,成功登录后可以看到项目组的所有项目

如图

 

 

 

 

 

而今天我们需要对zhitiao-admin也就是第一个项目进行部分修改,所以需要点进项目,找到http地址使用git clone 命令 将远程仓库clone到本地

 

 

 

 

 

 

 

 

此时可以在本地仓库成功clone到远程仓库了。现在就可以打开zhitiao-admin 进行项目的开发。

进入项目首先将本地分支使用git checkout -b 切换到Lucas分支

 

接着对项目进行部分修改,今天我要对项目中的dashboard 的index.vue 文件进行修改

然后在本地完成场景一的所有操作如图

点开gitlab上,也能成功的查看到自己提交了修改,并且看到远程master之前进行的提交。

 

此时我突然意识到一个问题,由于我一直在Lucas分支进行开发,在远程仓库里,我之前的最新提交也在Lucas的分支之中,此时本地仓库虽然切换到了Lucas分支,但是现在拉取的还是远程master分支,为了不在远程仓库新建一个分支,我将git push 的操作留到场景三种进行。

 


 

场景三:团队项目中的分叉合并

在场景二中,我在本地已经处于Lucas分支,但是此时的Lucas分支是新的本地Lucas分支,现在还没有merge远程的Lucas分支,也就是说,我现在需要对我之前远程仓库的Lucas分支进行merge操作,远程Lucas分支实际上是超越master分支几个版本的

首先使用 git fetch origin抓取远程仓库

此时发现团队里,有一个Jack分支的提交,但是与我无关,我只需要合并Lucas分支并在我的分支继续进行开发就行。

我的Lucas分支超越master分支几个版本,大概可以用下图示例

 

 

 

 

再使用git merge origin/Lucas,对Lucas分支进行合并

此时发现,新增了许多文件,这就是由于,之前我在Lucas分支上开发了许多新功能,但是项目组长还未将这些功能合并到master分支上面,而我的本地Lucas应该与远程Lucas分支进行同步,所以此时需要进行一次git merge的操作。

此时使用 git log 查看

可以查看到我之前在Lucas分支上进行的更改,并且和这次更改一起按序排列出来。

完成merge操作过后则需要将本次更改push到远程仓库,此时直接使用git push

emmmm此时发现一个问题,虽然本地分支名字与以前一样叫Lucas,但使用git push的时候,会显示没有上游分支,此时不能直接使用git push 则需要指定远程分支Lucas

 

现在则推送成功了,本地刚刚对index文件的修改则被成功推送到了远程仓库。

 

在实际的开发过程中,merge时有可能会遇到冲突,此时则需要解决完冲突,才能提交修改

 


 

 

场景四:Git rebase

由于在在本地开发的时候,或有很多次git commit的操作,然后在大量的commit之后,然后merge的话,会使我们的历史记录变得臃肿且难以阅读

而此时则需要使用git rebase的的命令来时 简化我们的记录,使记录变得简单易读,对于团队的开发能够起到比较好的作用

 

 

 

 

 

 

 此时假如我新增了3次更改如图

 但是假如此时合并的话,就会将这三次修改按序全部显示在log中,但实际上,我对div的的3次修改完全可以归为一次大的,修改div。

此时为了记录变得简单清晰,则可以使用git rebase操作

键入git rebase -i HEAD^^^命令整理三个版本,进入vim编辑模式

按i进入

 删除 修改div3  修改div2 这两次记录

按esc退出编辑模式,并按:wq 保存并退出

 

 

此时使用git log 查看发现

只有修改div1的操作了,这样记录就变得简单干净了许多。

 

总结

虽然之前有用过git,但在这次试验中,加深了对git的理解与认识,而且使用了一些之前没有用过的命令,比如git rebase,在以后实际的开发过程中,

对git的使用也会更加的熟练

 

------------恢复内容结束------------

posted @ 2020-10-13 17:27  LucasXH  阅读(198)  评论(0)    收藏  举报