实验目的:
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
通过学习通老师给的链接下载windows版本Git,并安装成功
1.2 配置GIT
设置自己的Git用户名及邮箱,确保输出内容带有颜色标记,并对比初始状态。
1.3从头创建仓库
创建一个目录,叫做 se2020-git-course,在该目录中,创建另一个目录,叫做 new-git-project,使用 cd 命令移到 new-git-project 目录下。
1.4克隆现有仓库并查看其状态
在 Git 上进行克隆的方法是调用我们将在终端上运行的命令 git clone,然后传入要克隆的 Git 仓库的路径。
使用命令行转到项目的目录下,输入 git status 。若输出:"nothing to commit, working directory clean",意味着成功。
1.5 git log命令
1)git log 命令用于显示仓库中所有 commit 的信息。
2)git log --oneline 用于更改仓库信息的显示方式
3) git log --stat命令可以用来显示 commit 中更改的文件以及添加或删除的行数。
4)git log -p此命令用于显示被修改的文件,显示添加/删除的行所在的位置,显示做出的实际更改。
5)git log -show命令
1.6 git add & git commit & git diff
1)在new-git-project里 创建HTML文件,添加一些起始代码;建立 js 和css 文件夹,并在文件下分别建立 app.js 和 app.css 文件,文件内容可为空。运行git add index.html命令,使用 git add 将 index.html 添加到暂存区。
2)暂存css和js文件
运行git add css/app.css js/app.js指令
3)第一次提交commit
进行第一次提交
输入“git commit”,进入编译器进行修改
4)第二次提交commit
使用 git commit 命令提交 commit,并添加提交说明 Add header to blog,运行git status,添加标题后在进行提交。
5)git diff
git diff 命令用来查看已经执行但是尚未 commit 的更改:输出:已经修改的文件,添加/删除的行所在的位置,执行的实际更改.
1.7 标签与分支
创建标签
a.进入new-git-project项目文件夹中,使用git tag命令与仓库的标签进行交互,输入:git tag -a v1.0
b.系统自动打开代码编辑器,在第一行输入"Ready for content"作为tag。
分支实战
更改 1 - 添加页面颜色
更改2 一 添加侧栏,向页面上添加一个侧栏。
更改3 一 更改master上的标题
合并冲突
合并失败时,就称为合并冲突。大部分情况下,git 将能够成功地合并分支。但是,有时候 git 无法完全自动地进行合并。合并失败时,就称为合并冲突。
解决合并冲突
根据冲突指示符,要选择保留的行还要删除所有带指示符的行。保存后commit(使用默认的commit信息)
实验总结与体会:
在实验的过程中,由于对git不熟悉导致遇到了许多的错误,例如不了解git的功能与作用,将命令输出,对编译器的配置未成功,命令提交不成功等。以及如何查看退出显示仓库信息等等,向老师请教或者自己去百度,找到问题的关键所在,重新再试几次,就会成功。我觉得这次Git实验能够大大提高我们的编程能力,为后来的学习奠定良好的基础。
思考题:阅读维基百科和百度百科 的Git词条,总结分布式分布式版本控制系统的核心机理.
答:分布式版本控制系统是一种有效、高速地处理从很小到非常大的项目版本管理系统。与它相对的是集中式版本控制系统。在分布式版本控制系统中客户端并不像集中式版本控制系统那样提取最新版本的文件快照,而是把代码仓库完整地镜像下来。这样的核心机理就轻松的解决了集中式版本控制系统中容易出现的也是很致命的中央服务器单点故障。分布式版本控制系统没有所谓的"中央服务器",每个人的电脑上都是一个完整的版本库。通常分布式版本控制系统有一台"伪中央服务器",但是这个服务器的作用仅仅是用来方便"交换"大家的修改,没有它大家仍然可以正常工作。并且Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。