实验一 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 命令解决冲突,解决完冲突之后再向主开发者提交补丁。
实验一 git代码版本管理的更多相关文章
- 实验一 GIT 代码版本管理
实验一 GIT 代码版本管理 实验目的: 1)了解分布式分布式版本控制系统的核心机理: 2) 熟练掌握git的基本指令和分支管理指令: 实验内容: 1)安装git 2)初始配置git ,git ...
- 实验一 GIT 代码版本管理
实验一 GIT 代码版本管理 实验目的: 1)了解分布式分布式版本控制系统的核心机理: 2)熟练掌握git的基本指令和分支管理指令: 实验内容: 1)安装git 2)初始配置git ,git ini ...
- 软件工程实验一 Git代码版本管理
实验一 GIT 代码版本管理 一.实验目的: 1)了解分布式分布式版本控制系统的核心机理: 2)熟练掌握git的基本指令和分支管理指令: 二.实验内容: 1)安装git: 2)初始配置git ,gi ...
- 实验一Git代码版本管理
GIT代码版本管理 实验目的: 1)了解分布式分布式版本控制系统的核心机理: 2) 熟练掌握git的基本指令和分支管理指令: 实验内容: 1)安装git 2)初始配置git ,git init git ...
- 软工 实验一 Git代码版本管理
实验目的: 1)了解分布式版本控制系统的核心机理: 2) 熟练掌握git的基本指令和分支管理指令: 实验内容: 1)安装git 2)初始配置git ,git init git status指令 3 ...
- 实验1 GIT代码版本管理
(一)实验目的: 1)了解分布式分布式版本控制系统的核心机理: 2) 熟练掌握git的基本指令和分支管理指令: (二)实验内容: 1)安装git 2)初始配置git ,git init git sta ...
- 实验一  GIT 代码版本管理
实验一 GIT 代码版本管理 实验目的: 1)了解分布式分布式版本控制系统的核心机理: 2) 熟练掌握git的基本指令和分支管理指令: 实验内容: 1)安装git 2)初始配置git ,git ...
- iOS - Git 代码版本管理
1.Git Git 是用 C 语言开发的分布版本控制系统.版本控制系统可以保留一个文件集合的历史记录,并能回滚文件集合到另一个状态(历史记录状态).另一个状态可以是不同的文件,也可以是不同的文件内容. ...
- GIT代码版本管理
一.实验目的 1.了解分布式版本控制系统的核心机理: 2.熟练掌握git的基本指令和分支管理指令: 二.实验内容 1.安装git: 2.初始配置git,git init git status指令: 3 ...
随机推荐
- C++文件写入,读出函数ofstream,ifstream的使用方法
ofstream是从内存到硬盘,ifstream是从硬盘到内存,其实所谓的流缓冲就是内存空间. 1.插入器(<<) 向流输出数据.比如说系统有一个默认的标准输出流(cout),一般情况下 ...
- NAT穿透的方式
目前主要的NAT类型有如下几种: 1)Full-cone NAT, also known as one-to-one NAT 一旦一个内网地址 (iAddr:iPort) 被映射到一个外部地址 (eA ...
- 开放应用模型操作指南(一)| 云服务一键接入 OAM 体系
作者 | 邓洪超 阿里云容器平台软件工程师 导读:Open Application Model(OAM)是阿里云联合微软等国际顶级技术团队联合发布的开放应用模型技术.旨在通过全新的应用定义.运维.分 ...
- How2j学习java-3下载 ECLIPSE
1.下载并解压Eclipse 下载并解压到e:/eclipse,目录情况如图所示.注: 这个Eclipse是64位的,应该使用本站提供的JDK(64)位,下载地址:JDK. 如果JDK位数和 Ecli ...
- python 中的 int() 与 round
int(x):向下取整 round(x):超过 .5 则向上取整,否则向下取整
- Mysql 一些细节方面解析(一)--MyISAM和InnoDB的主要区别和应用场景
myisam和innodb 简介:myisam读的效果好,写的效率差,这和它数据存储格式,索引的指针和锁的策略有关的,它的数据是顺序存储的,他的索引btree上的节点是一个指向数据物理位置的指针,所以 ...
- base64,base32bit加密解密
import base64 str='admin' str=str.encode('utf-8') #加密 bs64=base64.b64encode(str) #解密 debs64=base64.b ...
- 二叉树(3)AVL 树
封装基于 BinaryTreeOperations 的 AVL 树(一种自平衡的二叉查找树). 除了提供 BinaryTreeOperations 中的部分基础接口外,增加按键的插入 和 按键或节点指 ...
- cubic-bezier 个人学习理解
cubic-bezier 三次贝塞尔曲线函数,是一种动画的速度曲线.根据动画设置的时间,速度相应变化 四个点 P0,P1,P2,P3,其中P0是起点,坐标(0,0),P3是终点,坐标(1,1) PI和 ...
- pycharm自定义代码段
PyCharm使用技巧:Live Templates(快速输入自定义代码片段):链接