Git使用|青训营

147 阅读7分钟

实践目的和意义

实践目的

1)  熟练掌握git的基本指令和分支管理指令;

2)  掌握git支持软件配置管理的核心机理;

实践意义
  • 有利于熟悉软件开发,尤其是大型软件多人同时开发、迭代开发流程。熟悉运用git版本工具有助于提高软件开发效率和容错率,因git具有分支、合并、回退等版本控制的强大功能,能够让开发者在开发过程中减少因代码意外出错、版本冲突、需求改变等意外带来的顾虑。

实践基本原理与方法

  • 下载安装git工具,在本地创建仓库实现在本地的版本控制。在远程git版本控制平台,如:GitHub、Gitee等远程仓库注册账号,与本地仓库建立连接。实现本地仓库与远程仓库的同步,从而实现多人同时进行开发任务的交流互动。

Git基本操作包括:

创建仓库:

Git init:在本地创建git仓库(此时并无远程仓库连接)

Git clone:从远程仓库克隆到本地,此时自动与远程仓库建立连接

Git remote add origin:本地仓库与远程仓库建立连接

Git add:暂存更改(追踪更改);

Git commit:提交暂存的更改;

Git pull:拉取远程仓库(更新本地仓库)

Git push:将本地的已提交的更改推送至远程仓库

Git checkout:切换分支(switch可达到同样效果),通常带参数 -b用于新建并切换分支。同时可以附带远程分支,使本地分支与之对应

Git branch:查看分支,可选参数可控制输出分支类别(-a全部;-r远程等),-d删除分支

实践方案与技术路线
  • 在git官网下载git工具,下载后可在终端中查看git版本检查是否下载成功。随后在gitee平台上注册账号新建远程仓库。完成上述两步就可以在本地创建仓库,本实验中我采取克隆的方式在本地创建仓库(也可用“git init”在本地创建仓库)。接着就可以在本地仓库中尝试git命令,拉取、修改仓库内容、推送、新建分支。

实践记录

  • 下载git工具并在命令行中检查git 版本。随后在使用git工具前应该设置用户名和邮箱,由于git采用分布式,所以每个机器需要“署名”,这样远程仓库才知道每次提交是哪个用户进行提交的,在参与者只有自己的开发项目中,这一个设置其实可有可无,因为自己知道所有的提交者都是自己。但在多人合作的项目(开源项目就很典型)中,设置真实的用户名和邮箱显得尤为重要,这样才能定位每次提交的人,出了bug追责才能定位到哪一位开发者(由于实验课之前就设置过,本次实验就不重复设置了)。在gitee注册账号(我之前就注册过并使用,所以已有几个仓库)

image.png

image.png     

  • 利用git clone命令在本地仓库中clone远程仓库,因没有设置如下图所示

image.png

  • 下图是在git clone命令执行完后生成文件夹,即为从远程仓库克隆的,可以看到文件夹中有一个.git文件夹(该文件夹是隐藏文件夹需要设置一下才能看到),该文件夹说明当下路径已经被git管理,可以在当下路径执行git命令操作进行版本管理控制。

image.png

  • 除此之外我们还可以键入git remote -v命令查看当前本地仓库与远程仓库的连接情况,如下图:

image.png

  • 接下来我们尝试在本地仓库中做一点修改并将其添加至暂存更改随后提交:

image.png     

  • 上图中我在本地仓库中添加了一个README.md文件,随后执行git add.指令,意思是将所有的更改添加至暂存,这一步看似没有任何输出,但是没有暂存的更改是不允许提交的,也就是git commit会提示失败。

image.png

  • 随后执行git commit命令,这时会进入文本编辑器提示输入本次提交的解释信息。由于我添加了一个README markdown文件所以我的说明是add README.md to explain。通常在团队开发中会约定一个固定的格式以规范每次commit,如图:

image.png

image.png

image.png

提交成功!

image.png

      随后完成一次push,将更新的提交上传到远程仓库中。此时再次登录远程仓库就会发现仓库中新添加了README.md文件,和对应的提交信息。

image.png

 

  • 下图是分支管理的相关操作:git branch可以查看分支,默认只显示本地仓库的分支,加入参数 -a后就会显示本地仓库+远程仓库的所有分支。执行git checkout -b 分支名。就会在本地创建一个新的分支并且切换到该分支。下图演示了git branch -d命令删除一个分支。  

image.png

image.png

  • 下图是在编辑器vscode中安装了git的相关插件,支持git命令的图形化界面,在这里的添加暂存、提交、合并都有相应的图形化操作界面,同时可以看到分支的情况(当然图中只有一条主分支),和每次提交的信息。

image.png image.png

实践中问题
  • 当我在把本地dev分支推送至远程仓库时出现错误,根据提示信息可以发现是远程仓库与本地仓库版本不一致(通常是远程仓库版本高于本地仓库)。一般在本地修改之前需要先执行git pull指令将本地仓库与远程仓库同步,在最新的版本上进行修改就不会发生上述问题。
  • 此次是直接clone了远程仓库的代码。但在克隆过程中git默认会将整个仓库克隆下来,但只会在本地仓库创建一个master分支。当远程仓库不只有一个主分支时,同样容易出现上述问题。所以在clone仓库后,应使用checkout命令在本地创建创建分支拉取远程分支,并且git会自动建立tracking。如:git checkout -b dev origin/dev。 2.png

实践小结

  • 本次实践让我重新理解了git的工作原理和熟悉了git的基本操作。通过git版本管理控制工具,养成经常性提交的习惯,在敲代码的时候就不会畏手畏脚,也不用因为担心修改错误而用将旧代码注释掉(而不是直接删除)的方式保留旧代码,这样使代码变得十分冗余,代码量大的时候大段大段的注释令人头疼。有了git工具就可以直接将旧代码删除,只要在更改时做了提交,git就会帮我们将旧版本保存下来,在以后开发出现问题需要查看之前版本代码的时候也十分简单,也可以直接进行版本的回退。

  • 除此之外,远程仓库为软件多人开发提供了条件。大型软件项目往往需要多人团队共同开发,而git管理工具连接远程仓库大大提高了多人软件开发的效率,同时,团队管理者也可以从远程仓库上查看开发进度和开发人员的工作情况,及时发现开发中存在的问题。

  • 在使用git工具后才开始体会到软件工程中“工程”的意味,软件开发是一个极其复杂的过程,将软件开发“工程化”很有必要,git工具为达到这一目的做出了贡献。