实验目的:
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:转到 https://git-scm.com/downloads,下载 Windows 版软件,安装 Git 并选择所有默认选项。安装完毕后,你应该能够在命令行工具中运行 git。如果显示了使用信息,则一切正常!
1.2初始配置Git
在git—cmd中运行实验指导上给的代码,确保所有选项已经被配置好。
下载Sublime Text编辑器,让Git能和我的代码编辑器结合使用。
1.3从头创建仓库
创建一个目录,叫做 se2020-git-course,在该目录中,创建另一个目录,叫做 new-git-project,使用 cd 命令移到 new-git-project 目录下。可在终端上运行以下命令:- mkdir -p se2020-git-course/new-git-project && cd $_,在终端上运行 git init。终端会显示git init命令正在运行,该命令会在当前目录下初始化生成一个空的Git仓库。
克隆现有仓库:首先需要验证终端位置,在克隆任何内容之前,确保命令行工具已定位于正确的目录下。输入命令 git clone,然后输入你要克隆的 Git 仓库的路径。实验使用以下 URL :https://github.com/udacity/course-git-blog-project 。完整命令是:git clone https://github.com/udacity/course-git-blog-project
1.4 git log
克隆course-git-blog-project 仓库后,使用命令行转到项目的目录下。可以看到 git status 的输出结果是:"nothing to commit, working directory clean",意味着我们可以继续并检出该项目了!在终端运行 git log 命令。git log 命令用于显示仓库中所有 commit 的信息。默认情况下,该命令会显示仓库中每个 commit 的:SHA,作者,日期,消息。要想退出的话,使用q。
git log --oneline可以用来更改仓库信息的方式。
The git log 命令有一个选项可以用来显示 commit 中更改的文件以及添加或删除的行数。该选项为 --stat(stat 是“统计信息 statistics”的简称)
git log 命令具有一个可用来显示对文件作出实际更改的选项。该选项是 --patch,可以简写为 -p:$ git log -p
1.5 git add&git commit&git diff
创建一个叫做 index.html 的文件,并添加一些起始代码:
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Blog Project</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="">
<link rel="stylesheet" href="css/app.css">
</head>
<body>
<script src="js/app.js"></script>
</body>
</html>
建立 js 和css 文件夹,并在文件下分别建立 app.js 和 app.css 文件,文件内容可为空
进行代码编辑器的配置,git commit
1.6 标签,分支
1.7合并
合并冲突
1.8撤销更改
还原git revert
2)实验过程中发生的问题与解决。
1.在初始配置Git时,在name和我自己起的名字中间没有打空格,导致总是出错,后来经过百度才知道哪里出了问题。
2.在克隆仓库的时候一开始没能成功,多执行几次才克隆成功。需要耐心等待。
3.在在暂存文件并提交时没有出现所要的结果,后来发现是执行命令顺序出错,按照正确顺序执行命令后结果正确。
实验总结与体会: 通过此次实验,我了解了如何利用git和编辑器来创建仓库,复制仓库以及Git的一些命令的使用。在执行克隆操作是要使所有资源到克隆好才可以往下执行其他操作。这个实验需要大量的细心和耐心,我掌握的还不是很熟练,希望以后继续学习,能掌握更多。实验能够做出来只是按照老师的步骤,了解的比较少,还有很多不明白的地方,比如合并冲突以及解决冲突问题,课后还需多查阅资料加深了解。
思考题:本质上,Git是一套内容寻址文件系统,而和我们直接接触的Git界面,只不过是封装在其之上的一个应用层。这个关系颇有点类似于计算机网络中应用层和下属层的关系。在Git中,那些和应用层相关的命令,我们称之为porcelain命令;而和底层相关的命令,则称之为plumbing命令。要了解Git的底层原理,就需要了解Git是如何利用底层命令来实现高层命令的。Git就是分布式版本控制系统,对应的是集中式的版本控制如SVN。简单的说,分布式的版本控制就是每个人都可以创建一个独立的代码仓库用于管理,各种版本控制的操作都可以在本地完成。每个人修改的代码都可以推送合并到另外一个代码仓库中。而像SVN这样,只有一个中央控制,所有的开发人员都必须依赖于这个代码仓库。每次版本控制的操作也必须链接到服务器才能完成。很多公司喜欢用集中式的版本控制是为了更好的控制代码。如果个人开发,就可以选择Git这种分布式的。