实验一 GIT 代码版本管理
实验一 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、下载学习通上的gui,并安装成功。
1.2、设置Git 用户名和Git 邮箱, 确保 Git 输出内容带有颜色标记、对比显示原始状态


1.3、从头创建库
1.3.1、创建项目目录并使用命令git init 在当前目录下初始化生成一个空的git仓库。

1.3.2、克隆现有库
输入pwd确保终端的当前目录没有位于Git仓库中。
在克隆内容之前,确保命令行工具已定位于正确的目录下。
完整命令:git clone https://github.com/udacity/course-git-blog-project 。

1.3.3、找出并进入course-git-blog-project文件夹下,打开index.html文件,可见如下图blog网页

index文件的部分代码

1.3.4、判断仓库的状态
git status 是了解 Git 的核心所在。因此可利用 git status 命令来随时查看当前仓库的状态。运行结果如下图:

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

1.4.2、git log --oneline
用来更改美化仓库信息的显示形式

git clone --oneline 命令:
每行显示一个 commit
显示 commit 的 SHA 的前 7 个字符
显示 commit 的消息
1.4.3、git log --stat
git log --stat命令可以用来显示 commit 中更改的文件以及添加或删除的行数。
该命令的显示格式通常为:
(1)显示被修改的文件
(2)显示添加/删除的行数
(3)显示一个摘要,其中包含修改/删除的总文件数和总行数

1.4.4、git log -p
git log -p 显示对文件作出实际更改的选项

$ git log -p
此命令会向默认输出中添加以下信息:
显示被修改的文件
显示添加/删除的行所在的位置
显示做出的实际更改
1.4.5、git log -w
忽略空格的变化

1.5、git add& git commit&git diff----多种命令的使用
1.5.1先创建一个html文件添加代码,之后建立 js 和css 文件夹,并在文件下分别建立 app.js 和 app.css 文件。

1.5.2、使用git status检查git有没有跟踪这些文件。

1.5.3、执行git add index.html命令,然后执行继续执行git status,发现跟踪文件没有index.html,而处于暂存分类状态。

1.5.4、index.html 文件已暂存。再暂存另外两个文件。现在我们可以运行以下命令:
$ git add css/app.css js/app.js

1.5.5、再次执行git status,将文件放入暂存区中。

1.5.6、提交commit, 要在 git 中提交 commit,你需要使用 git commit 命令,在首行输入Initaial commit ,文本 "Initial commit"。

1.5.7、执行git commit 等命令完成提交。

1.5.8、第二个commit添加更改
将以下内容添加到 index.html 中的 body 标记中:
<header>
<h1>Expedition</h1>
</header>
1) 使用 git add 命令将文件移到暂存区,并使用 git status 验证文件是否位于暂存区。
2) 提交第二个 commit 吧!使用 git commit 命令提交 commit,并添加提交说明 Add header to blog
运行git status,添加标题后在进行提交。

1.5.9、git diff命令可以用来查看已被加入但是尚未提交的更改。

$ git diff
此命令会显示:
已经修改的文件
添加/删除的行所在的位置
执行的实际更改
1.5.10、可以使用名称特殊的文件 .gitignore。将此文件添加到 new-git-project项目根目录。你只需列出希望 git ignore(忽略,不跟踪)的文件名,git 将忽略这些文件。

1.6、标签、分支
1.6.1git tag标签:
使用 git tag 命令与仓库的标签进行交互,输入以下命令
git tag -a v1.0
打开编辑器

保存并退出编辑器,输入 git tag,命令行会显示仓库中的所有标签

1.6.2、删除标签

1.6.3、git branch 分支:git 中的分支非常灵活,使你能够实现一些很强大的功能。

(1)创建分支:要创建分支,只需使用 git branch 并提供要创建的分支对应的名称。因此,如果你想创建一个叫做"sidebar"的分支,只需运行以下命令:
$ git branch sidebar

(2)切换分支:
注意,在进行 commit 时,该 commit 将添加到当前分支上。虽然我们创建了新的 sidebar 分支,但是没有向其添加新的 commit,因为我们尚未切换到该分支。如果我们现在进行 commit 的话,该 commit 将添加到 master 分支,而不是 sidebar 分支。我们已经在演示中看到这一情况,要在分支之间进行切换,我们需要使用 git 的 checkout 命令。
$ git checkout sidebar

日志输出如下:

(3)活跃分支:判断活跃分支的最快速方式是查看 git branch 命令的输出结果。活跃分支名称旁边会显示一个星号。

(4)删除分支:删除分支,可以使用 -d 选项。下面的命令包含 -d 选项,告诉 git 删掉给出的分支
注意,无法删除当前所在的分支。因此要删除 sidebar 分支,你需要切换到 master 分支,或者创建并切换到新的分支。
删除内容让人比较紧张。但是不用担心。
1)如果某个分支上有任何其他分支上都没有包含的 commit(也就是这个 commit 是要被删除的分支独有的),git 不会删除该分支。
2)如果你创建了 sidebar 分支,向其添加了 commit,然后尝试使用 git branch -d sidebar 删除该分支,git 不会让你删除该分支,因为你无法删除当前所在的分支。
3)如果你切换到 master 分支并尝试删除 sidebar 分支,git 也不会让你删除,因为 sidebar 分支上的新 commit 会丢失!要强制删除,你需要使用大写的 D 选项 - git branch -D sidebar。

(5)高效分支:
执行以下操作:
1) 删除 前面建好的 siderbar 分支。
2)所有文件暂存并提交到仓库
3)切换到master分支
4)运行git status, 确认出现 working tree clean 或 working directory clearn

(6)分支实战:
在 master 分支上 - 向页面添加默认颜色
创建一个 sidebar 分支 - 为页面创建侧栏
在 master 分支上 - 更改页面的标题
在 sidebar 分支上 - 向侧栏中添加更多内容
创建一个 footer 分支 - 向脚注中添加社交链接、
更改 1 - 添加页面颜色

更改2 一 添加侧栏
我们向页面上添加一个侧栏。


更改3 一 更改master上的标题
切换到 master 分支并更新页面标题。使用 git checkout命令切换到 master分支。将页面的 <h1> 标题从"Expedition"改为"Adventure"。保存 index.html 文件并进行 commit 以将此更改添加到仓库中。( commit 消息"Improve site heading for SEO"),提交后用git log --oneline 检查。


(6)同时查看所有分支:
git log --oneline --graph --all
--graph 选项将条目和行添加到输出的最左侧。显示了实际的分支。--all 选项会显示仓库中的所有分支。
运行此命令将显示仓库中的所有分支和 commit:

1.7合并
主题分支(例如 sidebar)的作用是让你做出不影响 master 分支的更改。当你在主题分支上做出更改后,如果觉得不想要该分支上的更改,则可以删掉该分支,或者你决定要保留更改,则可以将该分支上的更改与其他分支上的更改合并。
将分支组合到一起称为合并。


1.7.1、合并冲突
合并失败时,就称为合并冲突。大部分情况下,git 将能够成功地合并分支。但是,有时候 git 无法完全自动地进行合并。合并失败时,就称为合并冲突。

1.7.2、解决合并冲突:
git 使用合并冲突指示符来告诉你两个不同分支上的哪些行导致了合并冲突,以及原始行是什么。要解决合并冲突,需要:
(1)选择保留哪些行
(2)删掉所有带指示符的行
1.8、撤销更改
1.8.1、更改最后一个commit

1.8.2、还原git revert
创建了一个包含一些更改的 commit,可以使用 git revert 命令来还原它。

1.8.3、重置git reset:
$ git reset <reference-to-commit>
可以用来:
将 HEAD 和当前分支指针移到目标 commit
清除 commit
将 commit 的更改移到暂存区
取消暂存 commit 的更改

1.8.4备份分支:使用 git reset 命令将清除当前分支上的 commit。
因此,如果你想跟着操作接下来出现的所有重置操作,需要在当前 commit 上创建一个分支,以便用作备份。

实验后总结与体会:
(1)起初做实验时运行git log后出现end 之后不知道怎样返回输入命令行,后细看了内容后才知道按下英文状态下的q即可。
(2)在进入到new-git-project目录下建立完文件和文件夹后,运行git status总是出现错误的界面,之后删除ls-la的多余的文件,出现了正确的界面。
(3)一次在不小心的情况下叉掉了gui bash界面,之后才知道在相应的文件夹下,右键点击gui bash即可。
这次实验虽然结束了但是各种知识点也只是有所了解,希望自己通过课后的进一步巩固强化能够更好的吸收各个知识内容。
思考题
阅读维基百科和百度百科的Git词条,总结Git是分布式版本控制系统
答:Git是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。分布式相比于集中式的最大区别在于开发者可以提交到本地,每个开发者通过克隆(git clone),在本地机器上拷贝一个完整的Git仓库。git更像一个文件系统,直接在本机上获取数据,不必连线到主机端获取数据。 每个开发者都可有全部开发历史的本地副本,changes从这种本地repository复制给其他开发者。这些changes作为新增的开发分支被导入,可以与本地开发分支合并。
实验一 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代码版本管理
实验目的 1. 了解分布式系统版本管理的核心机理. 2. 熟练掌握 git 的基本指令和分支管理指令. 实验内容 1. 安装 git.2. 初始化配置 git,git init ,git status ...
- 实验一  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 ...
随机推荐
- 动画 | 什么是平衡二分搜索树(AVL)?
二分搜索树又名有序二叉查找树,它有一个特点是左子树的节点值要小于父节点值,右子树的节点值要大于父节点值.基于这样的特点,我们在查找某个节点的时候,可以采取二分查找的思想快速找到这个节点,时间复杂度期望 ...
- Unity3d组件实现令人惊叹的像素粒子特效!
我们先看看两个特效,感受一下,有没有学习的动力? =========================================================================== ...
- PyCharm2019.3.2专业版激活
PyCharm2019.3.2专业版激活 Ryan 蚂蚁小黑 PyCharm 专业版激活 今天是除夕,在这阖家团圆的日子里,祝大家新春快乐,鼠年大吉,愿大家在新的一年里身体健康,万事如意! 新的一年 ...
- jmeter使用—正则表达式提取器
当我们测试接口的时候,有些请求参数是需要从上个接口返回获取的数据,这样的话我们就需要用到关联了.今天我们使用的关联是正则表达式提取器来进行获取需要关联的数据. 下面来具体说明正则表达式提取器的使用方法 ...
- DFS(深度优先搜索遍历有向图)-03-有向图-太平洋大西洋水流问题
给定一个 m x n 的非负整数矩阵来表示一片大陆上各个单元格的高度.“太平洋”处于大陆的左边界和上边界,而“大西洋”处于大陆的右边界和下边界. 规定水流只能按照上.下.左.右四个方向流动,且只能从高 ...
- JS-02-js的变量
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- 关于不同python版本print不一致的简单解决方案
经常遇到python2.x的print不带括弧,但python3.x必须要带括弧,版本不一致,需要修改,但是面对数以十计的重复劳动,不免望而却步.其他的一些不一样的地方同理. 解决方案: 运用正则化替 ...
- Django中model的class Meta
Class Meta 作用:使用内部类来提供一些metadata,以下列举一些常用的meta:1,abstract:如下段代码所示,将abstract设置为True后,CommonInfo无法作为一个 ...
- CodeBlocks 断点调试
启动调试器 1. 一般,调试器的按钮可以在工具栏找到 如果没有,可以从view菜单项中调出 2. 设置断点 使用调试器时需要让程序在需要的位置中断,在启动调试器前设置断点如下,鼠标点击编辑器的左边即可 ...
- 看片微信号+薇myy9199买片微信号+myy9199绝对靠谱号
最新看片卖片微信号+myy9199,2020最新有效靠谱号,诚信有效,死链包换,2019年11月,我决定学习计算机编程,以java语言为主.我就读于传统工科专业,没怎么接触过计算机相关概念与课程,我知 ...