实验一 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)安装GIT
进入https://git-scm.com/downloads,选择下载 Windows 版软件,安装 Git 并选择所有默认选项。
安装完毕后,你应该能够在命令行工具中运行 git。如果显示了使用信息,则一切正常!
(2)初始配置GIT
在初次配置GIT和代码编辑器过程中,因提前安装并进行了配置并没有进行截取配置过程图,通过使用git config --list进行查看,配置成功
接着进行仓库的创建,为后面进行实验打下基础
克隆course-git-blog-project 仓库后,使用命令行转到项目的目录下。你可以看到 git status 的输出结果是:"nothing to commit, working directory clean",意味着我们可以继续并检出该项目了!
(3)git log
在终端运行 git log 命令后,将显示相关信息,见下图
git log 命令用于显示仓库中所有 commit 的信息。默认情况下,该命令会显示仓库中每个 commit 的:SHA,作者,日期,消息
git log --oneline
git clone --oneline 命令:每行显示一个 commit,显示 commit 的 SHA 的前 7 个字符,显示 commit 的消息
git log --stat
The git log 命令有一个选项可以用来显示 commit 中更改的文件以及添加或删除的行数。该选项为 --stat
--stat 选项用于更改 git log 显示信息的方式:
此命令会:显示被修改的文件,显示添加/删除的行数,显示一个摘要,其中包含修改/删除的总文件数和总行数
git log -p
-p 选项(和 --patch 选项一样)用来更改 git log 显示信息的方式:此命令会向默认输出中添加以下信息:显示被修改的文件;显示添加/删除的行所在的位置;显示做出的实际更改
(4)git add& git commit&git diff
首先进入到new-git-project中,1)创建 HTML 文件
首先,创建一个叫做 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>
2)建立 js 和css 文件夹,并在文件下分别建立 app.js 和 app.css 文件,文件内容可为空
添加新文件,并使用git status 检查状态
暂存文件
在终端上运行以下命令,使用 git add 将 index.html 添加到暂存区:
$ git add index.html
终端显示 index.html 现在位于"Changes to be committed"(暂存)分类下。
暂存剩余的文件
index.html 文件已暂存。我们再暂存另外两个文件。现在我们可以运行以下命令:
$ git add css/app.css js/app.js或者使用 git add .
提交 Commit
使用 git commit 命令,但是先别运行这条命令。 如果尚未配置,可安装subline Text,并运行以下语句进行配置
git config --global core.editor "'C:\Program Files\Sublime Text 3\sublime_text.exe' -n -w"
(注意C:\Program Files\Sublime Text 3\sublime_text.exe 为你安装后sublime的地址。)在首行输入Initaial commit ,文本 "Initial commit" 并不特殊,只是第一个 commit 的常用消息。如果你想使用其他消息,完全可以!
完成提交
现在保存文件并关闭编辑器窗口(只关闭面板/标签页还不够,你还需要关闭 git commit 命令打开的代码编辑器窗口)。现在回到终端,你应该能看到类似于以下内容的界面
添加更改
现在提交第二个 commit!将以下内容添加到 index.html 中的 body 标记中:
<header>
<h1>Expedition</h1>
</header>
接着使用 git commit 命令提交 commit,并添加提交说明 Add header to blog。
git diff
git diff 命令可以用来查看已被加入但是尚未提交的更改。
要查看 git diff 的实际运行效果,我们需要一些未经提交的更改!在 index.html 中,我们重新组织标题的措辞。将标题从"Expedition"改为"Adventure"。保存文件,然后在终端上运行 git diff。
此命令会显示:已经修改的文件;添加/删除的行所在的位置;执行的实际更改
Git ignore
如果你想将某个文件保留在项目的目录结构中,但是确保它不会意外地提交到项目中,可以使用名称特殊的文件 .gitignore(注意文件名开头的点,很重要!)。将此文件添加到 new-git-project项目根目录。
.gitignore 文件用来告诉 git 不应跟踪的文件。该文件应该放在 .git 目录所在的目录
(5)标签、分支
git tag标签
下面我们仍然进入,前面建立的 new-git-project 项目文件夹中
git tag -a v1.0
保存并退出编辑器后,命令行上什么也不会显示,只需输入 git tag,命令行会显示仓库中的所有标签。们已经验证了该标签位于仓库中,但是我们想知道它位于仓库的哪个位置。为此,我们需要调用一直在使用的 git log
git branch 分支
git branch 命令
git branch 命令用来与 git 的分支进行交互:列出仓库中的所有分支名称,创建新的分支,删除分支,要创建分支,只需使用 git branch 并提供要创建的分支对应的名称,命令将删除 master 分支中的 commit 引用的所有文件。它会将这些文件替换为 sidebar 分支中的 commit 引用的文件。
提示符中的分支信息很有用,但是最清晰的查看方式是查看 git log 的输出结果
活跃分支
提示符将显示活跃分支。但这是我们对提示符进行的特殊自定义,如果你使用的是不同的计算机,判断活跃分支的最快速方式是查看 git branch 命令的输出结果
删除分支
$ git branch -d sidebar
注意,无法删除当前所在的分支。因此要删除 sidebar 分支,你需要切换到 master 分支,或者创建并切换到新的分支。
高效分支
我们将在 new-git-project 项目中进行操作。该项目具有以下文件:
index.html
css/app.css(空文件)
js/app.js(空文件)
app.css 和 app.js 文件是空的
分支实战
同时查看所有分支
$ git log --oneline --graph –all
(6)合并
合并指令
git merge 指令用来合并 git 分支:
$ git merge <name-of-branch-to-merge-in>
合并冲突
(7)撤销和更改
借助 --amend 选项,你可以更改最近的 commit。$ git commit –amend
还原 commit
当你告诉 git 还原(revert) 具体的 commit 时,git 会执行和 commit 中的更改完全相反的更改。
git revert 命令
现在我创建了一个包含一些更改的 commit,我可以使用 git revert 命令还原$ git revert <SHA-of-commit-to-revert>;git reset 命令用来重置(清除)commit:$ git reset <reference-to-commit>
备份分支
在进行任何重置操作之前,我通常会在最近的 commit 上创建一个 backup 分支,因此如果出现错误,我可以返回这些 commit:
实验总结与体会:
本次实验充分学习了git相关知识,对于相关命令使用的更加熟练。在GIT中可以进行目录查询,分支建立,进行命令的撤回,进行文件的仓库存储,以及进行文件状态的检查等等。
(1)在实验中仍然存在一些问题,比如进行git diff命令学习时,有一小部分不能及时消化和理解,在做题中发现问题。
(2)特别是到达标签和分支及以后,直接操作经常出现问题,但是经过再次尝试和理解,还是可以解决的。
(3)在进行合并操作时会有小问题,需要回头来进行再次解决。
思考题:
阅读维基百科和百度百科 的Git词条,总结分布式版本控制系统的核心机理
布式相比于集中式的最大区别在于开发者可以提交到本地,每个开发者通过克隆(git clone),在本地机器上拷贝一个完整的Git仓库。采用了分布式版本库的作法,不需要服务器端软件,就可以运作版本控制,使得源代码的发布和交流极其方便