实验一 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) 初始配置GIT
-
设置你的 Git 用户名
git config --global user.name "<Your-Full-Name>"
-
设置你的 Git 邮箱
git config --global user.email "<your-email-address>"

- 确保 Git 输出内容带有颜色标记
git config --global color.ui auto

-
对比显示原始状态
git config --global merge.conflictstyle diff3
git config --list

-
最终结果截图

2)从头创建仓库
-
创建项目目录
创建一个目录,叫做 se2020-git-course,在该目录中,创建另一个目录,叫做 new-git-project,使用 cd 命令移到 new-git-project 目录下。
可在终端上运行以下命令:- mkdir -p se2020-git-course/new-git-project && cd $_

-
git init

-
克隆现有仓库
git clone https://github.com/udacity/course-git-blog-project

如果需要换一个名称为 blog-project目录,可用
git clone https://github.com/udacity/course-git-blog-project blog-project

进入course-git-blog-project文件夹,在你喜欢的浏览器中打开 index.html 文件。可用看见已经克隆的blog网页。

-
判断仓库的状态
git status 是了解 Git 的核心所在。它将告诉我们 Git 正在考虑什么,以及 Git 所看到的我们仓库的状态。

3) git log
-
在终端运行 git log 命令
git log 命令用于显示仓库中所有 commit 的信息。
默认情况下,该命令会显示仓库中每个 commit 的:
-
SHA
-
作者
-
日期
-
消息



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

-
运行git log --stat 命令
git log --stat
此命令会:
-
显示被修改的文件
-
显示添加/删除的行数
-
显示一个摘要,其中包含修改/删除的总文件数和总行数

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

-
处理太多滚动操作
git log -p fdf5493
通过提供 SHA,git log -p 命令将从这条 commit 开始!无需滚动并逐条查阅!注意,它还会显示在所提供的 SHA 之前提交的所有 commit 信息。

git show fdf5493
git show 命令将仅显示一个 commit。它只显示一个 commit。git show 命令的输出和 git log -p 命令的完全一样。
3) git add & git commit & git diff
-
添加新文件,并使用git status 检查状态
进入到new-git-project (注意不是blog目录)
1)创建 HTML 文件
首先,创建一个叫做 index.html 的文件,并添加一些起始代码:
2)建立 js 和css 文件夹,并在文件下分别建立 app.js 和 app.css 文件,文件内容可为空
运行 git status命令

-
暂存文件
在终端上运行以下命令,使用 git add 将 index.html 添加到暂存区:
$ git add index.html

再来看看项目的状态:
终端显示 index.html 现在位于"Changes to be committed"(暂存)分类下。

-
暂存剩余的文件
index.html 文件已暂存。我们再暂存另外两个文件。现在我们可以运行以下命令:
git add css/app.css js/app.js 或者使用 git add . ( 句点指代当前目录,可以用来表示所有文件和目录(包括所有嵌套文件和目录!))


-
提交 Commit

-
第二个 commit - 添加更改


-
git diff

4) 标签、分支
-
git tag标签
git log目前结果:


tag 标签:


-
删除标签

-
git branch命令
查看分支

创建分支

checkout 命令

添加页面颜色

添加侧栏(litaoli = Add starting HTML structure)

这里出现了两次问题,第一次是因为分支切换出错,第二次是因为无法成功add。
针对第一次错误,可以重新切换或新建分支;
针对第二次错误,解决方案如下,注意.git文件时属于隐藏状态下的。

更改 master 上的标题

同时查看所有分支

更改小结
我们做出了以下更改:
-
我们在 master 分支上向页面添加了默认颜色
-
我们创建了 sidebar 分支并为侧栏添加了代码
-
我们在 master 分支上更改了页面的标题
-
我们在 sidebar 分支上向侧栏添加了更多内容
-
我们创建了 footer 分支并向脚注中添加了社交链接
5)合并
-
合并指令

合并小结
-
快进合并 – 要合并的分支必须位于检出分支前面。检出分支的指针将向前移动,指向另一分支所指向的同一 commit。
-
普通类型的合并
-
两个完全不同的分支被合并
-
创建一个合并 commit
-
人为制造合并冲突
在分支上更改标题 1,在分支上更改标题 2,完成如下

分支创建完毕,如下图:

合并冲突,如下图:

查看冲突,如下图:

解决冲突,如下图:

合并冲突小结
-
找到并删掉存在合并冲突指示符的所有行
-
决定保留哪些行
-
保存文件
-
暂存文件
-
提交 commit
6) 撤销更改
-
git commit --amend
如果你的工作目录没有内容(也就是仓库中没有任何未 commit 的更改),那么运行 git commit --amend 将使你能够重新提供 commit 消息。
代码编辑器将打开,并显示原始 commit 消息。
只需纠正拼错的单词或重新表述。
然后保存文件并关闭编辑器,以便采用新的 commit 消息。
-
还原 commit


revert 小结:
-
将撤消目标 commit 所做出的更改
-
创建一个新的 commit 来记录这一更改
-
重置小结
重置(reset) 似乎和 还原(revert) 相似,但它们实际上差别很大。还原会创建一个新的 commit,并还原或撤消之前的 commit。但是重置会清除 commit!
重置很危险!!!
-
相关 commit 引用小结
-
父 commit – 以下内容表示当前 commit 的父 commit
-
祖父 commit – 以下内容表示当前 commit 的祖父 commit
-
曾祖父 commit – 以下内容表示当前 commit 的曾祖父 commit
-
git reset命令小结 -
将 HEAD 和当前分支指针移到目标 commit
-
清除 commit
-
将 commit 的更改移到暂存区
-
取消暂存 commit 的更改
-
reset 小结
- 使用
--hard选项清除 commit
- 使用
--soft选项将 commit 的更改移至暂存区
- 使用
--mixed选项取消暂存已被 commit 的更改
实验总结与体会:
本次实验主要是通过一些基础的命令,来帮助我们快速熟悉环境。首先是逐条逐句的熟悉每条指令的作用,了解指令的用法与功能,最后在前部分实验的基础下,独自完成一个小的验证,有利于巩固知识。通过git可以完成很多种操作,让我亲身感受到了git的神奇之处,值得我们进行更加深入的学习与思考。
思考题:
阅读维基百科和百度百科 的Git词条,总结分布式分布式版本控制系统的核心机理。
答:分布式版本控制系统是一个开源的分布式版本控制系统,也像是一个文件系统,直接在本机上获取数据,不必连线到主机端获取数据,可以有效、高速地处理从很小到非常大的项目版本管理,Git 是 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。
浙公网安备 33010602011771号