第一次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指令
实验内容:
-
初次配置 Git
在开始使用 Git 之前,你需要配置 Git。在命令行工具中运行以下每行,确保所有选项都已被配置好。
# 设置你的 Git 用户名
git config --global user.name "<DL>"
# 设置你的 Git 邮箱
git config --global user.email "<502085315@qq.com>"
# 确保 Git 输出内容带有颜色标记
git config --global color.ui auto
# 对比显示原始状态
git config --global merge.conflictstyle diff3
git config --list
-
从头创建仓库
在对 Git 仓库进行 commit 或执行任何其他操作之前,需要一个实际存在的仓库。要使用 Git 新建一个仓库,我们将使用 git init 命令。init 子命令是"initialize"(初始化)的简称,这个命令很有用创建的过程中可能涉及如下命令
-
ls - 用来列出文件和目录
-
mkdir - 用来新建目录
-
cd - 用来更改目录
-
rm - 用来删除文件和目录
-
pwd -列出当前目录
(1)创建项目目录
(2)git init
(3)克隆现有仓库
(4)判断仓库的状态
git status 是了解 Git 的核心所在。它将告诉我们 Git 正在考虑什么,以及 Git 所看到的我们仓库的状态。当你第一次使用 Git 时,你应该一直都要使用 git status 命令.你应该习惯于运行任何其他命令之后,都运行下该命令。这样可以帮助你了解 Git 的工作原理,并避免你对文件 / 仓库状态做出不正确的推论。
问题记录×:此处出现了错误后改正,未选择blog目录, 应该进入到正确的目标文件夹操作
-
git log
我们快速总结下 git log 命令。git log 命令用于显示仓库中所有 commit 的信息。默认情况下,该命令会显示仓库中每个 commit 的:SHA,作者,日期,消息
(1)git init
可以开始使用 git init 命令了!这是最简单的命令之一。你只需在终端上运行 git init。终端会显示 git init 命令正在运行。该命令会在当前目录下初始化生成一个空的 Git 仓库。
(2)克隆现有仓库
git clone --oneline 命令:
-
每行显示一个 commit
-
显示 commit 的 SHA 的前 7 个字符
-
显示 commit 的消息
(3)git log --stat
The git log 命令有一个选项可以用来显示 commit 中更改的文件以及添加或删除的行数。该选项为 --stat(stat 是“统计信息 statistics”的简称
$ git log --stat
此命令会:
-
显示被修改的文件
-
显示添加/删除的行数
-
显示一个摘要,其中包含修改/删除的总文件数和总行数
(4)git log -p
git log 命令具有一个可用来显示对文件作出实际更改的选项。该选项是 --patch,可以简写为 -p:
$ git log -p
(5)git show
4.git add& git commit&git diff
-
1.git add
1)创建 HTML 文件
首先,创建一个叫做 index.html 的文件,并添加一些起始代码:
2)建立 js 和css 文件夹,并在文件下分别建立 app.js 和 app.css 文件,文件内容可为空
(1)检查状态
问题记录×:找不到对应的文件夹,然后返回上一层中间未打空格,对软件还是不熟悉。
(2)暂存文件
在终端上运行以下命令,使用 git add 将 index.html 添加到暂存区:
(3)暂存剩余的文件
2.提交 Commit
如果尚未配置,可安装subline Text,并运行以下语句进行配置
git config --global core.editor "'C:\Program Files\Sublime Text 3\sublime_text.exe' -n -w"
打开编辑器应该会打开出现以下界面:
此时终端处于冻结状态
完成提交:
第二个 commit - 添加更改
现在做以下操作
1)使用 git add 命令将文件移到暂存区,并使用 git status 验证文件是否位于暂存区。
2)提交第二个 commit 吧!使用 git commit 命令提交 commit,并添加提交说明
3.git diff
git diff命令用来查看已经执行但是尚未commit的更改:
$ git diff
此命令会显示: .
已经修改的文件
添加/删除的行所在的位置
执行的实际更改
gitignore
git知道查看名称为.gitignore的文件的内容。因为它在其中看到"project. docx",所以忽略了该文件,并且没有在git status的输出结果中显示该文件。
5. 标签、分支
该项目到目前为止的 git log 输出结果
git tag 命令
我们将使用 git tag 命令与仓库的标签进行交互,输入以下命令
我们已经验证了该标签位于仓库中,但是我们想知道它位于仓库的哪个位置。
删除标签
如果将标签消息中的某个字打错了,或标签名称打错了(输入 v0.1,而不是 v1.0),方法是删除这个标签并重新创建
向以前的 commit 添加标签
运行 git tag -a v1.0 将为最近的 commit 添加标签。但是如果你想向仓库中很久之前的 Commit 添加标签,只需提供要添加标签的 commit 的 SHA 即可!先查询历史SHA git log --oneline,查找已经commit的SHA
git branch 分支
git 中的分支非常灵活,能够实现一些很强大的功能。可以用来列出仓库中的所有分支名称
,创建新的分支,删除分支。
创建分支和切换分支
要创建分支,只需使用 git branch
并提供要创建的分支对应的名称。需要切换到该分支
运行该命令将:从工作目录中删除 git 跟踪的所有文件和目录(git 跟踪的文件存储在仓库中,因此什么也不会丢失),转到仓库,并提取分支指向的 commit 所对应的所有文件和目录。
利用git log 查看结果:
活跃分支
提示符将显示活跃分支。但这是我们对提示符进行的特殊自定义,使用的是不同的计算机,判断活跃分支的最快速方式是查看git branch命令的输出结果。活跃分支名称旁边会显示一个星号
删除分支
1)就是这个commit是要被删除的分支独有的,git 不会删除该分支。
2)如果你创建了[ sidebar |分支,向其添加了commit,然后尝试使用git branch -d sidebar 删除该分支,git 不会让你删除该分支,因为你无法删除当前所在的分支
3)如果你切换到| master |分支并尝试删除| sidebar分支,git 也不会让你删除,因为sidebar |分支上的新commit会丢失!要强制删除,你需要使用大写的D选项
高效分支
为开始后面实验,执行以下操作
1)删除前面建好的siderbar分支。
2)所有文件暂存并提交到仓库
3)切换到master分支
4)运行git status,确认出现working tree clean或working directory clearn
分支实战
现在,所有代码都位于master 分支(默认分支)上。 我们通过以下操作利用分支进行工作:
●向分支中添加内容
●创建新的分支
●在分支之间切换
让我们使用分支完成以下更改:
1.在master分支上-颇面添加默认颜色
2.创建一个sidebar分支-为页面创建侧栏
3.在master分支上-更改页面的标题
4.在sidebar分支上-向侧栏中添加更多内容
5.创建一个footer分支-向脚注中添加社交链接
更改 1 - 添加页面颜色
更改 2 - 添加侧栏
我们向页面上添加一个侧栏。
更改 3 - 更改 master 上的标题
使用git checkout命令切换到master分支。
6.合并
发生合并时,git将: .
.查看将合并的分支
查看分支的历史记录并寻找两个分支的commit历史记录中都有的单个commit
将单个分支上更改的代码行合并到一起
提交一个commit来记录合并操作
解决合并冲突
git使用合并冲突指示符来告诉你两个不同分支上的哪些行导致了合并冲突,以吸原始行是什么。要解决合并冲突,你需要:1.选择保留哪些行2.删掉所有带指示符的行
7.撤销更改
更改最后一个 commit
只需正拼错的单词或重新表述即可!然后保存文件并关闭编辑器,
向commit 中添加忘记的文件
更新最近的commit,,而不是创建新的commit。
还原 commit
当你告诉git还原(revert) 具体的 commit时, git 会执行和commit中的更改完全相反的更改。
git revert
命令
此命令:
将撤消目标commit所做出的更改
创建一个新的commit来记录这一-更改
备份分支
在进行任何重置操作之前,我通常会在最近的commit.上创建一个 backup 1分支,因此如
果出现错误,我可以返回这些commit
实验总结与体会:
通过本次实验让我对Git了解的加深从理论到实践的转换,所学的知识运用起来才可以掌握地更好。git是一个管理代码的版本控制系统,用git init创建一个git可以管理的仓库,这个仓库里有一个工作区,我们最基本的那些命令操作都是在工作区完成,在创建仓库的时候,在工作区里git又自动创建了一个.git文件,这个文件不属于工作区,是git的一个版本库,在版本库里有一个暂存区和一个git自动创建的分支,当我们通过git add向仓库添加文件时,实际上就是添加到了暂存区上面,当我们用git commit来提交全部文件时,实际上是从暂存区把文件上传到了分支上面。同时我了解分布式分布式版本控制系统的核心机理;熟练掌握git的基本指令和分支管理指令:。
思考题:阅读维基百科和百度百科的Git词条,总结分布式分布式版本
控制系统的核心机理:分布式相比于集中式的最大区别在于开发者可以提交到本地,每个开发者通过克隆(git clone),在本地机器上拷贝一个完整的Git仓库。Git的功能特性:从一般开发者的角度来看,git有以下功能:1、从服务器上克隆完整的Git仓库到单机上。2、在自己的机器上根据不同的开发目的,创建分支,修改代码。3、在单机上自己创建的分支上提交代码。4、在单机上合并分支。5、把服务器上最新版的代码fetch下来,然后跟自己的主分支合并。6、生成补丁,把补丁发送给主开发者。7、看主开发者的反馈,如果主开发者发现两个一般开发者之间有冲突(他们之间可以合作解决的冲突),就会要求他们先解决冲突,然后再由其中一个人提交。如果主开发者可以自己解决,或者没有冲突,就通过。8、一般开发者之间解决冲突的方法,开发者之间可以使用pull 命令解决冲突,解决完冲突之后再向主开发者提交补丁。
从主开发者的角度(假设主开发者不用开发代码)看,git有以下功能:1、查看邮件或者通过其它方式查看一般开发者的提交状态。2、打上补丁,解决冲突(可以自己解决,也可以要求开发者之间解决以后再重新提交,如果是开源项目,还要决定哪些补丁有用,哪些不用)。3、向公共服务器提交结果,然后通知所有开发人员。Git 是用于 Linux内核开发的版本控制工具。与常用的版本控制工具 CVS, Subversion 等不同,它采用了分布式版本库的方式,不必服务器端软件支持,使源代码的发布和交流极其方便。 Git 的速度很快,这对于诸如 Linux kernel 这样的大项目来说自然很重要。 Git 最为出色的是它的合并跟踪能力。实际上内核开发团队决定开始开发和使用 Git 来作为内核开发的版本控制系统的时候,世界开源社群的反对声音不少,最大的理由是 Git 太艰涩难懂,从 Git 的内部工作机制来说,的确是这样。但是随着开发的深入,Git 的正常使用都由一些友好的脚本命令来执行,使 Git 变得非常好用,即使是用来管理我们自己的开发项目,Git 都是一个友好,有力的工具。现在,越来越多的著名项目采用 Git 来管理项目开发.作为开源自由原教旨主义项目,Git 没有对版本库的浏览和修改做任何的权限限制。