软件工程-第一次课程实验

实验目的

1.了解分布式系统版本管理的核心机理

2.熟练掌握git的基本指令和分支管理指令

实验一 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.通过老师所给课件中的下载链接下载Windows版本的git,按照默认选项安装成功后便可开始使用。

2.初始配置git

  设置我的 Git 用户名

  git config --global user.name ""

   设置我的 Git 邮箱

  git config --global user.email ""

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

  git config --global color.ui auto

   对比显示原始状态

  git config --global merge.conflictstyle diff3

  git config --list

3.从头创建仓库

  在对 Git 仓库进行 commit 或执行任何其他操作之前,需要一个实际存在的仓库。要使用 Git 新建一个仓库,我们将使用 git init 命令。

3.1创建项目目录

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

软件工程-第一次课程实验_第1张图片

遇到的问题及解决:不知道如何将文件夹存储在除c盘以外的盘,经过查阅资料得到解决方法-----cd命令

 

3.2 git init命令

终端会显示 git init 命令正在运行。该命令会在当前目录下初始化生成一个空的 Git 仓库。

 

3.3克隆现有仓库

在 Git 上进行克隆的方法是调用我们将在终端上运行的命令 git clone,然后传入要克隆的 Git 仓库的路径(通常是 URL)。实验使用的 URL 是:https://github.com/udacity/course-git-blog-project 。

软件工程-第一次课程实验_第2张图片

 

3.4判断仓库的状态

git status 是了解 Git 的核心所在用来判断仓库的状态。git status 命令将显示很多信息,具体取决于你的文件状态、工作目录和仓库。在一个空目录中运行 git status 命令的结果是"No commits yet"(尚未有任何提交)。克隆course-git-blog-project 仓库后,使用命令行转到项目的目录下。转到目录下后使用git status命令。

软件工程-第一次课程实验_第3张图片

 

 

4. git log命令

git log 命令用于显示仓库中所有 commit 的信息。按Q键退出。

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

  • SHA

  • 作者

  • 日期 

软件工程-第一次课程实验_第4张图片

 

遇到的问题及解决:不知道如何从git log命令中退出,按Q/q键退出。

4.1  git clone --oneline命令

软件工程-第一次课程实验_第5张图片

 

 总结

git clone --oneline 命令:

  • 每行显示一个 commit

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

  • 显示 commit 的消息

4.2  git log--stat命令

The git log 命令有一个选项可以用来显示 commit 中更改的文件以及添加或删除的行数。该选项为 --stat(stat 是“统计信息 statistics”的简称)。

软件工程-第一次课程实验_第6张图片

$ git log --stat

此命令会:

  • 显示被修改的文件

  • 显示添加/删除的行数

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

4.3 git log -p 命令

它具有一个可用来显示对文件作出实际更改的选项。该选项是 --patch,可以简写为 -p:

软件工程-第一次课程实验_第7张图片

 

 

$ git log -p

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

  • 显示被修改的文件

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

  • 显示做出的实际更改

 4.4处理太多滚动操作

有两种实现方式:

  • 向 git log 提供你要查看的 commit 的 SHA

  • 使用新的 git show 命令

 如git log -p fdf5493

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

软件工程-第一次课程实验_第8张图片

 

 

git show fdf5493

上行上述示例命令将仅显示最近的 commit。通常,将 SHA 作为最后一个参数提供给命令:

软件工程-第一次课程实验_第9张图片

 

 

git show 命令将仅显示一个 commit。因此,如果你看不到任何其他 commit,不要惊慌。它只显示一个 commit。git show 命令的输出和 git log -p 命令的完全一样。因此默认情况下,git show 会显示:

  • commit

  • 作者

  • 日期

  • commit 消息

  • 补丁信息             

5. git add&git commit&git diff

5.1 git add暂存文件

在new-git-project文件夹下创建 HTML 文件,并添加一些起始代码;建立 js 和css 文件夹,并在文件下分别建立 app.js 和 app.css 文件,文件内容可为空;使用 git add 命令将这三个文件移到暂存区。

软件工程-第一次课程实验_第10张图片

 

5.2 git commit提交

使用 git commit 命令后,会打开我们所设置的代码编辑器:

软件工程-第一次课程实验_第11张图片

 

遇到的问题及解决:设置git的代码编辑器时路径错误,导致不能打开默认的代码编辑器。正确路径为F:\Sublime Text 3\sublime_text.exe' -n -w"。

 

 在代码编辑器第一行输入Initaial commit,则完成提交后

软件工程-第一次课程实验_第12张图片

 

 第二个commit提交,将以下内容添加到 index.html 中的 body 标记中:

   

Expedition

运行 git status

软件工程-第一次课程实验_第13张图片

 

 使用 git add 命令将文件移到暂存区,并使用 git status 验证文件是否位于暂存区。

软件工程-第一次课程实验_第14张图片

 

 提交第二个 commit ,使用 git commit 命令提交 commit,并添加提交说明 Add header to blog。

 5.3 git diff

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

软件工程-第一次课程实验_第15张图片

 

 git diff 小结

此命令会显示:

  • 已经修改的文件

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

  • 执行的实际更改

 5.4 gitignore 

假设向项目所在目录添加了一个 Word 文档等文件,但是不希望将该文件添加到仓库中。git 会看到这个新文件,所以在你运行 git status 时,它将显示在文件列表中。

 软件工程-第一次课程实验_第16张图片

 

 

在项目中包含此文件存在的潜在问题是,因为 git add . 会添加所有文件,因此该 Word 文档可能会不小心 commit 到仓库。

如果你想将某个文件保留在项目的目录结构中,但是确保它不会意外地提交到项目中,可以使用名称特殊的记事本文件 .gitignore。将此记事本文件添加到 new-git-project项目根目录。你只需列出希望 git ignore(忽略,不跟踪)的文件名,git 将忽略这些文件。如project.docx文件。

软件工程-第一次课程实验_第17张图片

 

 终端显示了 git status 的输出结果。Word 文档已不再列为未跟踪文件(untracked files )。但是列出了新的".gitignore"文件。

gitignore小结:

.gitignore文件用来告诉 git 不应跟踪的文件。该文件应该放在.git 目录所在的目录。

 遇到的问题及解决:所创建的.gitignore文件格式错误,我创建的是文本文档,输入git命令时发现不可执行,应建立的是记事本文件。

 6.标签、分支

6.1 git tag 标签

输入命令git tag v1.0可打开代码编辑器,输入"Ready for content"作为tag,保存并退出编辑器后,只需输入 git tag,命令行会显示仓库中的所有标签。输入命令git log 可知道标签位于仓库的位置。

软件工程-第一次课程实验_第18张图片

 

 

软件工程-第一次课程实验_第19张图片

 

 删除标签 git tag -d v1.0

 

 向以前的commit添加标签,先使用git log  --oneline查找已经commit  的SHA,在已经知道的 git 标签命令中加上 commit 的 SHA即可。 

软件工程-第一次课程实验_第20张图片

 

 6.2 git branch 分支

 git branch 命令用来与 git 的分支进行交互:

  • 列出仓库中的所有分支名称

  • 创建新的分支

  • 删除分支

 如果我们只输入 git branch,则 git 将列出仓库中的分支:

 

 创建分支

要创建分支,只需使用 git branch 并提供要创建的分支对应的名称。虽然创建了 sidebar 分支,但是它还不是当前分支,目前提示符显示的是当前分支master。要使用该sidebar分支,你需要切换到该分支。

要在分支之间进行切换,我们需要使用 git 的 checkout 命令。

软件工程-第一次课程实验_第21张图片

 

 

活跃分支

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

 

 

删除分支

无法删除当前所在的分支。因此要删除 sidebar 分支,你需要切换到 master 分支,或者创建并切换到新的分支。要强制删除,你需要使用大写的 D 选项 - git branch -D sidebar

软件工程-第一次课程实验_第22张图片

 

 

分支实战

更改1一添加页面颜色

确保位于 master 分支上,并向 css/app.css 添加以下内容:

body {
    background-color: #00cae4;
}
保存文件,然后将该文件添加到暂存区,并将其 commit 到仓库。

软件工程-第一次课程实验_第23张图片

 

 更改2一添加侧栏

向该 commit 添加分支的命令是:git branch sidebar 38c3526,再使用 git checkout 命令切换到新的 sidebar 分支,运行指令git chekout sidebar 切换到分支sidebar 。

软件工程-第一次课程实验_第24张图片

 

 

更改3一更改master标题

切换到 master 分支并更新页面标题,并提交到仓库。使用 git checkout 命令切换到 master 分支。软件工程-第一次课程实验_第25张图片

 

 

提交后使用git log --oneline检查,同时使用$ git log --oneline  --graph --all查看所有分支。、

 

软件工程-第一次课程实验_第26张图片

 

 

7.合并

发生合并时,git 将:

  • 查看将合并的分支

  • 查看分支的历史记录并寻找两个分支的 commit 历史记录中都有的单个 commit

  • 将单个分支上更改的代码行合并到一起

  • 提交一个 commit 来记录合并操作

 git merge 指令用来合并 git 分支:

软件工程-第一次课程实验_第27张图片

 

合并冲突

在分支上更改标题 1并提交,在分支上更改标题 2,并使用 git log 获取上一个 commit 的 SHA在该 commit 上创建一个heading-update分支。在创建 heading-update 分支后用git log --oneline --graph --all   输出结果如下所示:

软件工程-第一次课程实验_第28张图片

完成后使用git merge heading-update,发现冲突

要解决合并冲突,你需要:

  1. 选择保留哪些行

  2. 删掉所有带指示符的行

删除完毕后将标题设为如下,解决冲突

 软件工程-第一次课程实验_第29张图片

 

 

合并冲突小结

当相同的行在要合并的不同分支上做出了更改时,就会出现合并冲突。git 将在合并途中暂停,并告诉你存在冲突,以及哪些文件存在冲突。要解决文件中的冲突:

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

  • 决定保留哪些行

  • 保存文件

  • 暂存文件

  • 提交 commit

 

 

8.撤销更改 

若已经使用 git commit 命令提交了大量的 commit。现在,借助 --amend 选项,你可以更改最近的 commit。

 

git revert 命令用于还原之前创建的 commit:

此命令:

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

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

 

 实验总结与体会:在此次课程实验的过程中,由一开始的不知所措到根据老师的课件、查阅资料等逐步实现实验要求,虽然在实验过程中遇到了很多问题,例如对git命令的不熟悉,最后学会了git命令的含义和作用、git的基本操作。

思考题:

答:

Git就是分布式版本控制系统。简单的说,分布式的版本控制就是每个人都可以创建一个独立的代码仓库用于管理,各种版本控制的操作都可以在本地完成。每个人修改的代码都可以推送合并到另外一个代码仓库中。

你可能感兴趣的:(软件工程-第一次课程实验)