软件工程实验一 git代码版本管理

实验一  GIT 代码版本管理

实验目的:

1)了解分布式分布式版本控制系统的核心机理;

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

 

实验内容:

1)安装git

2)初始配置git ,git init git status指令

3)掌握git log ,git add ,git diff 指令

4) 掌握git tag git branch,git commit 指令

5)掌握git revert 指令

 

实验记录:

1)实验内容结果的截图

2)实验过程中发生的问题与解决

实验内容1):在官网上寻找下载界面(https://git-scm.com/downloads),选择和自己的设备相应的版本下载安装,安装过程中的选项全为默认。

实验内容2):安装完毕后,在CMD中配置git,包括设置用户名、用户邮箱和git的颜色标记,具体见图2-1。   

软件工程实验一 git代码版本管理_第1张图片

                                                      图2-1 git初始设置

                 在所需项目目录下需先建立一个git仓库才能进行后续操作,用git init命令创建仓库,如图2-2所示。 

 

                                                     图2-2 git init 命令(1)

                 在使用git init命令前,应该转移到需要的项目目录下,在这里为该实验创建一个项目目录,并用cd转移到该目录下,再使用git init命令,如图2-3;

                                                             图2-3 git init 命令(2)

                git status命令显示git正在考虑什么和仓库的状态,如2-4所示,此时我没在该项目目录下做出任何操作,它的反应如下。它再之后的操作中有很大的作用。

                                                              图2-4 git status(无操作)

实验内容3):git log命令可以显示仓库中所有的commit的信息;git log --oneline可以在git log命令的基础上,更改commit信息的排列方式,使我们可以更方便地查找所需的commit数据;git log --stat可以显示 commit 中更改的文件以及添加或删除的行数;

git log -p命令可以用来显示对文件作出实际更改的选项。如图3-1所示;

软件工程实验一 git代码版本管理_第2张图片

                                                                    图3-1 git log

                git add可以将文件从工作目录转移到暂存区,以方便git跟踪,而后使用git commit命令提交commit。在这个过程中应用git status命令时时观察git的状态,如图3-2;

软件工程实验一 git代码版本管理_第3张图片

                                          图3-2 git add && git commit 命令的结合使用

                git diff可以显示已经修改的文件及其具体情况,如图3-3所示;

软件工程实验一 git代码版本管理_第4张图片

                                                        图3-3 git diff命令

实验内容4):Git tag 可以当前分支打标签,以便后续查看。

 

                                                                   图4-1 git tag命令

软件工程实验一 git代码版本管理_第5张图片

                                                           图4-2 git tag (代码编辑器)

       git branch命令可以列出本地分支、创建新的分支、删除分支(使用git branch -d “分支名”命令)。在创建新分支后,可以用git checkout “分支名”命令切换分支,还可以用git log --oneline命令查看各个commit的所属分支,如图4-3所示。

软件工程实验一 git代码版本管理_第6张图片

                                                                           图4-3 git branch命令

        git commit命令一般和git add命令配合使用,其作用在git add部分已经说明。在这里,我谈谈关于我在使用git commit命令时遇到的问题,如图4-4所示,在把项目目录下的文件放入仓库时,有一个文件却放不进仓库里。

软件工程实验一 git代码版本管理_第7张图片

                                                                             图4-4 问题

      首先我试着把该文件再单独操作一遍,却仍旧没有效果,如图4-5。

软件工程实验一 git代码版本管理_第8张图片

                                                                       图4-5 解决方法1

    然后我试着操作所有文件,但是还是没有效果,如图4-6。

软件工程实验一 git代码版本管理_第9张图片

                                               图4-6 解决方法2

        最终,我使用了git commit -m “...”命令和git push origin master命令,强制把css/app.css文件放到了仓库中,如4-7。

软件工程实验一 git代码版本管理_第10张图片

                                                                   图4-7 解决方法3

实验内容5):git revert可以还原更改的commit,使用该命令时,需在后面加上需修改的commit序列号的前七位,如图5-1所示。

                                                                          图5-1 git revert

在这里因为我在使用git revert命令前合并了分支,所以这里出现了错误。

补充:git merge 命令可以在git中合并分支。发生合并时,git 将查看将合并的分支,查看分支的历史记录并寻找两个分支的 commit 历史记录中都有的单个 commit,将单个分支上更改的代码行合并到一起,提交一个 commit 来记录合并操作。在上述实验的基础上,在合并分支前,需保证位于new-git-project项目下,已检出master分支,git status的结果包含working directory cleaning,命令结果如下:

大部分情况下,git 将能够成功地合并分支。但是,有时候 git 无法完全自动地进行合并。合并失败时,就称为合并冲突。

如果出现合并冲突,git 将尝试尽可能合并多的内容,然后将留下特殊选项(例如 >>> 和 <<<),告诉程序员需要从何处手动修复,如下图:

软件工程实验一 git代码版本管理_第11张图片

在这里,分支master把Adventure改为了Quest,分支heading-update又把Adventure改为了Crusade,导致在合并这两个分支后,会出现合并冲突,最后git会在文件里留下如上图所示的特殊选项供程序员了解情况。

实验总结与体会:(以下内容根据各自实验情况填写)

   在本次实验中我熟悉了git各命令的作用,并借此了解了git的工作机制。

思考题:(以下内容根据各自实验情况填写)

   阅读维基百科和百度百科 的Git词条,总结分布式分布式版本控制系统的核心机理

   分布式版本控制的客户端并不只提取最新版本的文件快照,而是把代码仓库完整地镜像下来。这么一来,任何一处协同工作用的服务器发生故障,事后都可以用任何一个镜像出来的本地仓库恢复。因为每一次的提取操作,实际上都是一次对代码仓库的完整备份。

   Git与常用的版本控制工具 CVS, Subversion 等不同,它采用了分布式版本库的方式,不必服务器端软件支持,使源代码的发布和交流极其方便。

你可能感兴趣的:(软件工程实验一 git代码版本管理)