实验一 git代码版本管理
实验目的
1. 了解分布式系统版本管理的核心机理。
2. 熟练掌握 git 的基本指令和分支管理指令。
实验内容
1. 安装 git。
2. 初始化配置 git,git init ,git status。
3. 掌握 git log,git diff,git add。
4. 掌握 git tag ,git branch,git commit。
5. 掌握 git revert指令。
实验记录
1. 安装 git
2. 初始配置 git ,git init git status 指令
2.1 在开始使用 Git 之前,需要配置 Git。配置结果如下:
2.2 在对 git 仓库进行 commit 或执行任何其他操作之前,需要一个实际存在的仓库。要使用 Git 新建一个仓库,将使用 git init 命令。结果如下:
2.3 git status 是了解 git 的核心所在。它将告诉我们 git 正在考虑什么,以及 Git 所看到的我们仓库的状态。当第一次使用 git 时,应该一直都要使用 git status 命令.应该习惯于运行任何其他命令之后,都运行下该命令。这样可以帮助了解 git 的工作原理,并避免你对文件 / 仓库状态做出不正确的推论。结果如下:
3. 掌握 git log,git diff,git add
3.1 使用git log 命令查看 commit 的信息。结果如下:
3.1.1 使用 git log --oneline 更改仓库信息的显示方式,如下:
3.1.2 使用 git log --stat 显示 commit 中更改的文件以及添加或删除的行数,如下:
3.1.3 git log -p 命令具有一个可用来显示对文件作出实际更改的选项,如下:
3.1.4 使用 git show 命令将仅显示一个 commit。如下:
3.2 进入到 new-git-project ,创建 HTML 文件,首先,创建一个叫做 index.html 的文件,再建立 js 和 css 文件夹,并在文件下分别建立 app.js 和 app.css 文件,文件内容可为空。
3.2.1使用 git add 将 index.html 添加到暂存区,此时再次输入 git status 命令,查看当前状态。如下:
3.2.2 使用 git add 将 css 文件和 js 文件添加到暂存区,此时再次输入 git status 命令,如下:
3.2.3 要在 git 中提交 commit,需要使用 git commit 命令,如下:
3.3 使用 git diff 命令可以用来查看已被加入但是尚未提交的更改,将 html 文件中的标题从"Expedition"改为"Adventure"。如下:
4. 掌握 git tag ,git branch,git commit
4.1.1 使用 git tag -a v1.0,命令将打开代码编辑器,并等待你为标签输入信息。我们输入"Ready for content"作为tag,如下:
4.1.2 使用 git tag 命令行会显示仓库中的所有标签,如下:
4.2.1 使用命令创建分支,如下:
4.2.2 分支实战
- 更改一:添加页面颜色,如下:
- 更改二:添加侧栏,如下:
- 更改三:更改 master 上的标题,如下:
- 查看分支,如下:
4.3 使用 git merge 指令来合并 git 分支,如下:
4.3.1 在分支上更改标题1,如下:
4.3.2 在分支上更改标题2,如下:
4.3.3 合并冲突,如下:
4.3.4 git status 的输出结果告诉我们 index.html 中存在合并冲突。因此在代码编辑器中查看该文件!如下:
5. 掌握 git revert 指令
现在创建了一个包含一些更改的 commit,可以使用 git revert 命令还原它.因为最近的 commit 的 SHA 是 2c3a381,要还原该 commit:需要运行 git revert c362da5,如下:
实验过程中发生的问题与解决:
1. 问题:一开始不知道 git gui、git cmd、git bash 的区别,做实验应该用哪一个。
解决:gui 是可视化图形界面,git 中的 bash 是基于cmd 的,在 cmd 的基础上增添一些新的命令与功能。所以在使用的时候,用 bash 更加方便。
补充:git 在安装的时候也安装了一个轻量级的 bash 环境,然后启动这个”git bash”,出来的命令窗口就带有这个 bash 环境的环境变量。bash 是基于 shell 的命令库,本身是 unix 下的命令脚本。你甚至可以在”git bash”中使用一个轻量的vi编辑器。 因此本质上来说:git bash 是一个封装过的cmd命令行,并在其中加入了指向 bash 环境的环境变量。因此 cmd 命令行本身的环境变量它也有,自然就能使用 dos 命令了。但是在封装的过程中,windows 可能对调用自己 cmd 命令行控件的第三方应用设了限制,所以说是大部分可以用。
2. 问题:在浏览 git log 的信息时使用下键浏览较慢。
解决:强调了“默认情况下”是因为 git log 命令显示的信息远不止这些。git 使用命令行分页器 less 浏览所有信息。b 键可以整个页面往下翻。
实验总结与体会
通过本次实验我不仅了解分布式系统版本管理的核心机理,还熟练掌握git的基本指令和分支管理指令。在实验过程中遇见了一些问题,通过查阅资料与请教老师同学得到解决,本次实验更是让我收获很多,耐心得到了很大的提高。
思考题
阅读维基百科和百度百科 的Git词条,总结分布式版本控制系统的核心机理。
Git(读音为/gɪt/。)是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。Git 是 Linus Toorvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。分布式相比于集中式的最大区别在于开发者可以提交到本地,每个开发者通过克隆(git clone),在本地机器上拷贝一个完整的Git仓库。从服务器上克隆完整的Git仓库(包括代码和版本信息)到单机上。在自己的机器上根据不同的开发目的,创建分支,修改代码。在单机上自己创建的分支上提交代码。在单机上合并分支。把服务器上最新版的代码fetch下来,然后跟自己的主分支合并。生成补丁(patch),把补丁发送给主开发者。看主开发者的反馈,如果主开发者发现两个一般开发者之间有冲突(他们之间可以合作解决的冲突),就会要求他们先解决冲突,然后再由其中一个人提交。如果主开发者可以自己解决,或者没有冲突,就通过。一般开发者之间解决冲突的方法,开发者之间可以使用pull 命令解决冲突,解决完冲突之后再向主开发者提交补丁。