实验一 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.1 安装GIT
老师在学习通中发布了最新版本,点击下载并按照要求安装,安装成功后能够在命令行工具中运行git。
1.2 初始配置
在开始使用 Git 之前,需要配置 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
运行过程及结果如下图所示:

1.3 从头创建仓库
使用cd命令移到C盘,创建一个目录,叫做 se2020-git-course,在该目录中,创建另一个目录,叫做 new-git-project,使用 cd 命令移到 new-git-project 目录下。
在终端上运行以下命令:- mkdir -p se2020-git-course/new-git-project && cd $_。
创建好目录后,运行git init 命令,该命令会在当前目录下初始化生成一个空的 Git 仓库。如下图所示:

克隆现有仓库,在终端输入命令并运行:git clone https://github.com/udacity/course-git-blog-project

1.4 git log
git log 命令:用来显示仓库中所有commit的信息,默认情况下该命令显示仓库中每个commit的SHA,作者,日期,消息;

git log --oneline命令:可以使输出结果更简短,并节省大量空间,该语句每行显示一个 commit,显示 commit 的 SHA 的前 7 个字符,显示 commit 的消息;

git log --stat命令:用于更改 git log 显示信息的方式:显示被修改的文件,显示添加/删除的行数,显示一个摘要,其中包含修改/删除的总文件数和总行数;

git log -p命令:用来更改 git log 显示信息的方式,显示被修改的文件,显示添加/删除的行所在的位置,显示做出的实际更改;

1.5 git add & git commit & git diff
首先,创建一个叫做 index.html 的文件,并添加一些起始代码(老师在学习通中给出),然后建立 js 和css 文件夹,并在文件下分别建立 app.js 和 app.css 文件, 文件内容可为空,运行git status 命令,可知道我们创建了几个新的文件,并且告诉我们 git 没有跟踪这些文件。

暂存文件:使用 git add index.html ,git add css/app.css js/app.js命令将所建文件添加到暂存区,然后运行 git status 命令,我们可以知道 git add 执行了什么操作 以及添加的 文件时发生了什么;

提交commit:安装Sublime Text,运行 git config --global core.editor "'C:\Program Files\Sublime Text 3\sublime_text.exe' -n -w"语句进行配置,然后运行git commit命 令,会出现以下界面,此时终端处于冻结状态,等待在sublime里面输入信息;

完成提交:关闭编辑器窗口,回到终端,出现以下界面,表示提交了第一个commit.

第二个 commit -添加更改:
将以下内容添加到 index.html 中的 body 标记中:
<header>
<h1>Expedition</h1>
</header>
运行 git status,结果如下图所示:

git diff命令:此命令会显示:已经修改的文件,添加/删除的行所在的位置,执行的实际更改;将标题从"Expedition"改为"Adventure"。保存文件,然后在终端上运 行 git diff。
1.6 标签、分支
git tag 命令:使用 git tag 命令与仓库的标签进行交互,用来标记特定的commit。输入命令 git tag -a v1.0 ,该命令将打开代码编辑器,并等待你为标签输入信息 。 该 命令使用了 -a 选项,代 表 git 创建的是一个带注释的标签,包含标签创建者,标签创建日期,标签消息等信息。
保存退出编辑器,输入 git tag,命令行显示仓库中的所有标签。

删除标签git tag -d :输入命令git tag -d v1.0 ,将删除创建的标签v1.0。
![]()
向以前的commit添加标签:使用 git log --oneline 查询已经commit的SHA,假设已经commit的SHA为d8a6f8f ,命令 git tag -a v1.0 d8a6f8f 即为SHA为d8s6f8f的 commit 添加标签v1.0。

git branch 命令:用来与 git 的分支进行交互,它可以用来列出仓库中的所有分支名称,创建新的分支,删除分支。
如果只输入git branch ,则git将列出仓库中的分支;

创建分支:只需使用 git branch 并提供要创建的分支对应的名称。例如要创建的分支名为 sidebar,则运行命令 git branch sidebar即可。目前只是sidebar 分支,但 是它还不是当前分支,目前提示符显示的是当前分支master。要使用该sidebar分支,你需要切换到该分支。
git checkout 命令:切换分支。将master分支切换到sidebar 分支。

活跃分支:提示符将显示活跃分支。活跃分支名称旁边会显示一个星号*。

删除分支:使用-d选项删除分支,但不能删除当前分支。例如当前分支为sidebar,要删除sidebar,分支,你需要切换到 master分支,或者创建并切换到新的分支。

分支实战
更改一-添加页面颜色:向 css/app.css 添加以下内容:
body {
background-color: #00cae4;
}
保存文件,然后将该文件添加到暂存区,并将其 commit 到仓库。commit 的内容: Set background color for page通过git log 检查commit 记录。

更改二-添加侧栏:向commit添加分支sidebar d8a6f8f,然后切换到新的分支sidebar


更改三-更改master上的标题:将分支切换到master,保存index.html文件进行commit,commit 消息写为Improve site heading for SEO,提交后用git log --oneline检 查。

查看所有分支:git log --oneline --graph --all;

1.7 合并
合并指令git merge:当前在分支master,合并sidebar分支,运行语句 git merge sidebar:

合并冲突:在 master分支上更改标题,将 <h1>标题改为Quest。使用 git log 获取上一个 commit 的 SHA,在 它上面创建一个heading-update分支,在创建 heading- updata分支后,使用git log --oneline --graph --all ,输出结果如下所示:

执行命令 git merge heading-update,终端输出了导致合并冲突的合并输出结果,出现单词CONFLICT

合并冲突指示如下图所示:

解决合并冲突:删掉所有包含合并冲突指示符的行并选择保留哪个标题后,直接保存文件,并将其添加到暂存区,然后 commit!就像普通合并一样,代码编辑器会 弹出,并让你提供 commit 消息。在编辑器打开后,直接关闭编辑器并使用自动生成的 commit 消 息。
1.8 撤销更改
更改最后一个commit:使用git commit --amend 命令,代码编辑器将打开,更改commit 内容;

还原commit:执行命令 git revert,会弹出代码编辑界面,编辑提供的commit 消息,运行后会发现,它输出了我们要求它还原的commit 的提交说明,并且创建了新的
commit,此命令的功能是:将撤消目标 commit 所做出的更改,创建一个新的 commit 来记录这一更改。
重置:git reset 命令用来重置commit,
使用 --hard 选项清除 commit
使用 --soft 选项将 commit 的更改移至暂存区
使用 --mixed 选项取消暂存已被 commit 的更改
2.实验过程中发生的问题与解决
(1)问题:在初始配置Ggit log --onelineIT时,运行git list之后,并没有显示用户名与邮箱;
解决:在命令语句与自行设置的用户名和邮箱之间分别键入空格。
(2)问题:在暂存文件并提交时没有出现所要的结果;
解决:执行命令顺序出错,按照正确顺序执行命令后结果正确。
(3)问题:在把分支sidebar切换成master时,出现错误,无法切换,错误为未提交已修改的文件;
解决:使用命令git restore --staged 和git restore解决了出现的错误。
实验总结与体会:(以下内容根据各自实验情况填写)
通过这次实验,简单掌握了一点GIT的基本使用方法以及一些执行命令,但是也只是按照老师的步骤,了解的比较少,还有很多不明白的地方,比如合并冲突以及解决冲突问题,课后还需多查阅资料加深了解。
思考题:(以下内容根据各自实验情况填写)
阅读维基百科和百度百科 的Git词条,总结分布式分布式版本控制系统的核心机理。
分布式版本控制系统最大的特点是不需要每次提交都把文件推送到版本控制服务器,而是采用分布式版本库的机制,使得每个开发人员都够从服务器中克隆一份完整的版本库到自己计算机本地,不必再完全依赖于版本控制服务器,使得源代码的发布和合并更加方便。客户端并不只提取最新版本的文件快照,而是把原始的代码仓库完整地镜像下来。这么一来,任何一处协同工作用的服务器发生故障,事后都可以用任何一个镜 像出来的本地仓库恢复。因为每一次的提取操作,实际上都是一次对代码仓库的完整备份。更进一步,许多这类系统都可以指定和若干不同的远端代码仓库进行交互。籍此,你就可以在同一个项目中,分别和不同工作小组的人相互协作。你可以根据需要设定不同的协作流程,比如层次模型式的工作流,而这在以前的集中式系统中是无法实现的。
------------恢复内容结束------------
浙公网安备 33010602011771号