实验一 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)实验内容结果的截图

(1)安装Git

(2)初始配置Git

设置Git用户名,邮箱,确保Git输出内容带有颜色标记

对比显示原始状态

将Git与代码编辑器结合使用

(3)从头创建仓库

使用mkdir 创建项目目录se2020-git-course,在该目录中,创建另一个目录,叫做 new-git-project,使用 cd 命令移到 new-git-project 目录下。

使用git init命令在当前目录下初始化生成一个空的 Git 仓库 

使用git clone 命令克隆现有仓库(确保终端的当前工作目录没有位于 Git 仓库中) ,进入course-git-blog-project文件夹,在你喜欢的浏览器中打开 index.html 文件,可用看见已经克隆的blog网页。

使用git status 命令判断仓库的状态(空仓库与非空仓库运行的结果不同)

 (4)git log命令

git log 命令用于显示仓库中所有 commit 的信息,默认情况下,该命令会显示仓库中每个 commit 的(SHA、作者、日期、消息)

git log --oneline 命令:每行显示一个 commit、显示 commit 的 SHA 的前 7 个字符、显示 commit 的消息

git log --stat用来显示 commit 中更改的文件以及添加或删除的行数

git log -p:此命令会向默认输出中添加以下信息:显示被修改的文件,显示添加/删除的行所在的位置,显示做出的实际更改(git show 命令将仅显示一个 commit)

(5)git add & git commit & git diff

在new-git-project目录下创建一个index.html文件,建立 js 和css 文件夹,并在文件下分别建立 app.js 和 app.css 文件,使用git status命令发现git并为跟踪到这些新建的文件

 

要将所有文件提交到仓库中,首先需要将这些文件从工作目录移到暂存区,使用 git add 命令将index.html文件移到暂存区,再使用git status命令发现文件存在暂存文件夹

 

使用使用 git add .( 句点指代当前目录,可以用来表示所有文件和目录(包括所有嵌套文件和目录!))将所有文件提交到暂存区,再次使用git status命令发现所有文件存在暂存文件夹

使用git commit 命令打开编辑器后,在首行输入Initaial commit保存文件并关闭编辑器窗口(只关闭面板/标签页还不够,还需要关闭git commit命令打开的代码编辑器窗口),回到终端后会发现如下输出结果

在index.html文件的body中输入代码,保存后返回终端显示了 git status 命令的结果。它显示了"Changes not staged for commit"部分,其中包含修改后的"index.html"文件

index.html中,将标题从"Expedition"改为"Adventure",保存文件,然后在终端上运行 git diff,会显示出已经修改的文件,添加/删除的行所在的位置和执行的实际更改

(6)标签,分支(git tag,git branch)

使用 git tag 命令与仓库的标签进行交互,在命令 (git tag -a v1.0) 中,使用了-a选项,该选项告诉 git 创建一个带注释的标签;如果已经存在标签,只需输入git tag,命令行会显示仓库中的所有标签。 

如果标签输入错误,可以通过输入 -d 选项 (表示 delete 删除!)加上标签名称来删除 git 标签

git branch它可以用来:列出仓库中的所有分支名称,创建新的分支,删除分支(*提示符显示的是活跃分支);使用git branch sidebar来新建一个标签;使用git checkout sidebar来切换到sidebar标签中

切换到master标签中使用git branch -d sidebar 命令来删除sidebar标签

可以使用 git log --oneline  --graph --all命令来显示仓库中的所有分支和 commit

(7)合并(git merge)

使用git merge命令来合并分支

  

制造合并冲突,使用 git log 获取上一个 commit 的 SHA,在该 commit 上创建一个heading-update分支(使用git checkout SHA 转换到此SHA下,再使用git checkout -b 来创建分支)

合并两个分支发现产生合并冲突

使用git status处理合并冲突

当相同的行在要合并的不同分支上做出了更改时,就会出现合并冲突。git 将在合并途中暂停,并告诉你存在冲突,以及哪些文件存在冲突。要解决文件中的冲突:

  • 找到并删掉存在合并冲突指示符的所有行

  • 决定保留哪些行

  • 保存文件

  • 暂存文件

  • 提交 commit

(8)撤销更改(git revert)

更改最近的commit信息

还原commit信息

重置(清除)commit信息后发现commit里内容为空

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

(1)在使用cd命令更改目录时,使用cd- 更改到home目录,在更改目录时要写全目录名称

(2)在运行git commit命令时显示需要告诉它用户名和地址信息,将用户名和email地址重新输入后可以得到正确的运行结果

 

(3) 在删除分支时不可以在当前目录删除当前分支,需要切换到其他分支下来删除此分支

四、实验总结与体会:

  通过这次git实验我学到了许多与git相关的知识,在实验的过程中我遇到了许多的问题,虽然有实验指导与实验步骤做参考,但在自己实际操作的过程中还是大大小小的遇到了许多问题,重新做了几遍,再通过网上查询与询问同学,最后终于将实验给完成了。在使用git log命令查询commit信息做学习通中的题时,最开始只是逐个的按照题中信息对SHA进行查找,但commit信息太多,查询速度很慢,而且会有的信息找不到,经过后来的实验发现可以通过git log -p SHA或git show SHA命令来进行具体的commit信息查询;这次实验虽然做了很久,也重新做了几遍,但它让我的印象更加深刻了,也为我在以后的理论学习和实验中打下了基础。

五、思考题:

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

 答:Git是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理,不必服务器端软件支持,使源代码的发布和交流极其方便,分布式相比于集中式的最大区别在于开发者可以提交到本地,每个开发者可以通过克隆(git clone),在本地机器上拷贝一个完整的Git仓库,各种版本的操作都可以在本地完成。

posted @ 2020-02-29 14:56  糖廿廿  阅读(149)  评论(0编辑  收藏  举报