实验一 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

  • 设置你的 Git 用户名

git config --global user.name "<Your-Full-Name>"

 

  • 设置你的 Git 邮箱

git config --global user.email "<your-email-address>"

  •  确保 Git 输出内容带有颜色标记

git config --global color.ui auto

  •  对比显示原始状态

git config --global merge.conflictstyle diff3

git config --list

  •   最终结果截图

 

2)从头创建仓库

  •  创建项目目录

创建一个目录,叫做 se2020-git-course,在该目录中,创建另一个目录,叫做 new-git-project,使用 cd 命令移到 new-git-project 目录下。

可在终端上运行以下命令:- mkdir -p se2020-git-course/new-git-project && cd $_

  •  git init

  •  克隆现有仓库

 git clone https://github.com/udacity/course-git-blog-project

 如果需要换一个名称为 blog-project目录,可用

 git clone https://github.com/udacity/course-git-blog-project  blog-project

 进入course-git-blog-project文件夹,在你喜欢的浏览器中打开 index.html 文件。可用看见已经克隆的blog网页。

 

  •  判断仓库的状态

git status 是了解 Git 的核心所在。它将告诉我们 Git 正在考虑什么,以及 Git 所看到的我们仓库的状态。

3) git log

  • 在终端运行 git log 命令

git log 命令用于显示仓库中所有 commit 的信息。

默认情况下,该命令会显示仓库中每个 commit 的:

  • SHA

  • 作者

  • 日期

  • 消息

 

 

  • 运行git log --oneline命令

git clone --oneline 命令:

  • 每行显示一个 commit

  • 显示 commit 的 SHA 的前 7 个字符

  • 显示 commit 的消息

  • 运行git log --stat 命令

 git log --stat

此命令会:

  • 显示被修改的文件

  • 显示添加/删除的行数

  • 显示一个摘要,其中包含修改/删除的总文件数和总行数

 

  •  运行git log -p命令

 git log -p

  • 此命令会向默认输出中添加以下信息:

  • 显示被修改的文件

  • 显示添加/删除的行所在的位置

  • 显示做出的实际更改

  • 处理太多滚动操作

git log -p fdf5493

通过提供 SHA,git log -p 命令将从这条 commit 开始!无需滚动并逐条查阅!注意,它还会显示在所提供的 SHA 之前提交的所有 commit 信息。

 git show fdf5493

git show 命令将仅显示一个 commit。它只显示一个 commit。git show 命令的输出和 git log -p 命令的完全一样。

3) git add & git commit & git diff

  •  添加新文件,并使用git status 检查状态

进入到new-git-project (注意不是blog目录) 

1)创建 HTML 文件

    首先,创建一个叫做 index.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

  • 第二个 commit - 添加更改

 

  • git diff

4) 标签、分支

  •  git tag标签 

git log目前结果:

tag 标签:

 

  • 删除标签

  • git branch 命令

查看分支

 创建分支

 checkout 命令

 添加页面颜色

  添加侧栏(litaoli = Add starting HTML structure)

这里出现了两次问题,第一次是因为分支切换出错,第二次是因为无法成功add。

针对第一次错误,可以重新切换或新建分支;

针对第二次错误,解决方案如下,注意.git文件时属于隐藏状态下的。

更改 master 上的标题

同时查看所有分支

更改小结

我们做出了以下更改:

  1. 我们在 master 分支上向页面添加了默认颜色

  2. 我们创建了 sidebar 分支并为侧栏添加了代码

  3. 我们在 master 分支上更改了页面的标题

  4. 我们在 sidebar 分支上向侧栏添加了更多内容

  5. 我们创建了 footer 分支并向脚注中添加了社交链接

 5)合并

  • 合并指令

 合并小结

  • 快进合并 – 要合并的分支必须位于检出分支前面。检出分支的指针将向前移动,指向另一分支所指向的同一 commit。

  • 普通类型的合并

    • 两个完全不同的分支被合并

    • 创建一个合并 commit

  • 人为制造合并冲突

在分支上更改标题 1,在分支上更改标题 2,完成如下

 分支创建完毕,如下图:

 合并冲突,如下图:

 查看冲突,如下图:

解决冲突,如下图:

 合并冲突小结

  • 找到并删掉存在合并冲突指示符的所有行

  • 决定保留哪些行

  • 保存文件

  • 暂存文件

  • 提交 commit

6) 撤销更改

  • git commit --amend

如果你的工作目录没有内容(也就是仓库中没有任何未 commit 的更改),那么运行 git commit --amend 将使你能够重新提供 commit 消息。

代码编辑器将打开,并显示原始 commit 消息。

只需纠正拼错的单词或重新表述。

然后保存文件并关闭编辑器,以便采用新的 commit 消息。

  • 还原 commit

 

 

 revert 小结:

  • 将撤消目标 commit 所做出的更改

  • 创建一个新的 commit 来记录这一更改

  • 重置小结

重置(reset) 似乎和 还原(revert) 相似,但它们实际上差别很大。还原会创建一个新的 commit,并还原或撤消之前的 commit。但是重置会清除 commit!

重置很危险!!!

  • 相关 commit 引用小结

  • 父 commit – 以下内容表示当前 commit 的父 commit

  • 祖父 commit – 以下内容表示当前 commit 的祖父 commit

  • 曾祖父 commit – 以下内容表示当前 commit 的曾祖父 commit

  • git reset 命令小结

  •  将 HEAD 和当前分支指针移到目标 commit

  • 清除 commit

  • 将 commit 的更改移到暂存区

  • 取消暂存 commit 的更改

  • reset 小结

  • 使用 --hard 选项清除 commit
  • 使用 --soft 选项将 commit 的更改移至暂存区
  • 使用 --mixed 选项取消暂存已被 commit 的更改

实验总结与体会:

本次实验主要是通过一些基础的命令,来帮助我们快速熟悉环境。首先是逐条逐句的熟悉每条指令的作用,了解指令的用法与功能,最后在前部分实验的基础下,独自完成一个小的验证,有利于巩固知识。通过git可以完成很多种操作,让我亲身感受到了git的神奇之处,值得我们进行更加深入的学习与思考。

思考题:

   阅读维基百科和百度百科 的Git词条,总结分布式分布式版本控制系统的核心机理。

答:分布式版本控制系统是一个开源的分布式版本控制系统,也像是一个文件系统,直接在本机上获取数据,不必连线到主机端获取数据,可以有效、高速地处理从很小到非常大的项目版本管理,Git 是 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。

 

posted @ 2020-02-24 20:39  LALA12  阅读(185)  评论(0)    收藏  举报