实验目的:
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 之前,要进行初始配置 ,如下设置用户名和邮箱等基础配置。


二、创建仓库
1、克隆所需的仓库
在对 Git 仓库进行 commit 或执行任何其他操作之前,需要一个实际存在的仓库,首先创建一个目录,叫做 se2020-git-course,在该目录中,创建另一个目录,叫做 new-git-project,使用 cd 命令移到 new-git-project 目录下,然后使用 git init命令,新建一个仓库。

克隆实验所需仓库,输入命令 git clone,然后输入克隆的 Git 仓库的路径,实验使用以下 URL :https://github.com/udacity/course-git-blog-project 。

2、判断仓库状态:
git status 是了解 Git 的核心所在,它将告诉我们 Git 正在考虑什么,以及 Git 所看到的我们仓库的状态,运行此命令结果如下图所示:
 
git status 作用:
git status 命令将显示很多信息,具体取决于你的文件状态、工作目录和仓库。但是你不需要过于关心这些内容…只需运行 git status,它将显示你需要知道的信息。
输出结果告诉了我们几条信息:
- On branch master – 这部分告诉我们 Git 位于 master 分支上,(也就是默认分支)。
- Your branch is up-to-date with 'origin/master'. – 因为我们使用 git clone 从另一台计算机上复制了此仓库,因此这部分告诉我们项目是否与所复制的仓库保持同步状态。我们不会在其他计算机上处理该项目,因此这一行可以忽略。
- nothing to commit, working directory clean – 表示没有任何待定的更改。
三、commit提交
1、Git log

1-1、git log oneline

1-2、git log --stat

1-3:git log -p

2、git show:

3、git add
进入到 new-git-project,首先创建一个叫做 index.html 的文件,并添加一些起始代码,然后建立 js 和css 文件夹,并在文件下分别建立 app.js 和 app.css 文件,文件内容为空,接下来使用 git status 检查状态,运行结果如下图:

使用 git add 将 index.html 以及其他文件添加到暂存区,并再次检查状态,运行结果如下图:

4、git commit
接着提交 commit, 使用 git commit 命令,运行这条命令将会打开之前配置的代码编辑器 Sublime Text,输入commit 信息,保存关闭即可,运行结果如下图:

现在提交第二个commit:

使用 git log 检查刚刚提交的 commit ,运行结果如下图:

5、git diff
git diff 命令可以用来查看已被加入但是尚未提交的更改。在 index.html 中将Expedition改为Adventure,保存文件,然后在终端上运行 git diff。运行结果如下图:
6、gitignore
 如果我们向项目所在目录添加了一个 Word 文档等文件,但是不希望将该文件添加到仓库中。git 会看到这个新文件,并且运行 git status 时,它将显示在文件列表中。如下图所示:
因为 git add . 会添加所有文件,因此该 Word 文档可能会不小心 commit 到仓库。我们可以用 .gitignore(注意文件名开头的点不能忽略)确保它不会意外地提交到项目中。将 123456.docx 文件添加到 new-git-project 项目根目录。将 "123456.docx” 代码添加到 .gitignore 文件中,git 将忽略这些文件。现在运行 git status 并查看输出结果:

四、标签、分支以及合并
1、git tag
 git tag 命令可以为 commit 添加标签,运行 git tag -a v1.0 命令打开代码编辑器,输入信息,保存退出,结果如下:
2、git branch
创建分支:

3、git merge
合并分支:

4、分支冲突:
在master分支上更改标题。

在上一个 commit 上创建新分支,并在该分支上更改标题。
结果如下:

五、撤销更改:
1、git commit--amend
该命令可以对最近一个提交的 commit 进行更改,重新提交commit 消息,注意是更改并不会创建新的 commit 。

2、git revert
 使用 git revert df80b36 将该条 commit 所做的修改撤消,并创建一个新的 commit 来记录这一更改,运行结果如下。
3、git reset
使用 git reset 命令将清除当前分支上的 commit,运行结果如下:

实验中问题和总结:
git status对初学者很有帮助,在刚开始不熟悉整个系统时候多使用这条命令,可以有效地帮助你少走弯路,节省实验时间,能够帮助我们快速了解Git的工作原理。
思考题:
阅读维基百科和百度百科 的Git词条,总结分布式分布式版本控制系统的核心机理
Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件,是一个开源的分布式版本控制系统,可以有效、高速的处理从很小到非常大的项目版本管理。分布式的版本控制就是每个人都可以创建一个独立的代码仓库用于管理,在自己的机器上根据不同的开发目的,创建分支,修改代码,提交代码,并通知所有开发人员,速度更快、更灵活,两个开发者之间的冲突也更容易解决。
 
                     
                    
                 
                    
                 
         
