# Git实操

实验目的

1)了解分布式分布式版本控制系统的核心机理;

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

实验内容:

1)安装git

2)初始配置git ,git init git status指令

3)掌握git log ,git add ,git diff 指令

  1. 掌握git tag git branch,git commit 指令

5)掌握git revert 指令

安装

去官网找安装,分为GUI和SHELL,主要使用GUI,SHELL还没有尝试过,SHELL的界面是这个样子的,这里主要使用SHELL。

image-20200222131105946

使用

Git init

运行命令行,进入你所在的项目目录,输入get init,则在该目录下生成.git文件,此文件记录了你的所有提交,并记录了你的所有修改,这是这个仓库的核心,所以这个文件非常的重要,不允许删除或者修改。

image-20200226101706048

Git Clone

Git Clone是我们把在互联网上的仓库克隆到我们本地的仓库中,在本地仓库中,你可以对克隆的项目进行各式各样的修改。该命令的第1个参数是互联网的url地址,后面的参数默认是这个项目的名字,但是你也可以自己修改它的名字,如果没有运行get init,直接运行克隆,会默认对他进行git init。

image-20200226101827574

Git Status

表现此时仓库的各项情况,仓库中工作区暂存区和提交区的状态,是否存在分支以及属于哪个分支当中。

image-20200226101848600

Git Log

显示在这个仓库中曾经提交过的提交记录。经常以图形化的形式来进行展示.

  • git log --oneline --graph

    image-20200226102040396

  • git log --stat

    image-20200226102254042

  • git log --patch

    image-20200226102331974

  • git log -p [SHA/ART/DATA/MSG]

    image-20200226102423268

  • git show [SHA]

Git Add

此命令将工作区的文件添加到暂存区,使用get stauts查看此时暂存区的文件状态,如果你添加了不想添加的文件,到暂存区使用git rm --cached来删除这个文件.

image-20200226102716163

Git Commit

此命令将暂存区的文件添加到仓库中,运行此命令之后,会打开代码编辑器,在代码编辑器中会展示一系列信息如此次提交的注释信息,此时是第几次提交,以及提交的文件列表。

image-20200226103237510

image-20200226103318041

Git Diff

Git diff用于显示哪些文件已经修改了

image-20200226103404726

Git Ignore

运行此命令,将在此仓库不跟踪这些文件,你也可以创建一个特殊的文件.gitignore,并采用通配符来忽略一系列相似的文件.

image-20200222135907117

Git Tag

用于标注具有特定含义的提交,这些标签可以代表的含义,如标签创建者标签,创建日期以及标签消息,删除标签采用git tag -d [标签名]如果向往以前的提交中添加标签,可以使用git tag -a [name] [SHA]

image-20200226103930223

Git Branch

在分布式管理系统中,最最强大的就是其分支功能,可以创建各种各样的分支,来满足不同的开发需求。

  • git branch

​ 查看这个仓库中所有的分支

  • git branch [name]

​ 创建一个新的分支

  • git checkout [name]

​ 切换到另一个分支

  • git branch -d [name]

​ 删除一个分支

image-20200226105710791

git merge

主题分支(例如 sidebar)的作用是让你做出不影响 master分支的更改。当你在主题分
支上做出更改后,如果觉得不想要该分支上的更改,则可以删掉该分支,或者你决定要保留更
改,则可以将该分支上的更改与其他分支上的更改合并.

在合并时,务必要知道处于哪一个分支,防止合并后产生错误的提交

git merge [name-of-branch-to-merge-in]

此命令可以让你合并你想要合并的分支。

image-20200226113001402

合并冲突

合并冲突产生的原因是完全相同的行在不同的分支中被修改了,导致git不知道该选择哪一个,此时就会产生合并冲突。

但是解决合并冲突也是非常简单的,通过合并冲突指示符来查看,保存你需要的内容,删掉不需要的内容。

撤销与更改提交

git commit --amend

​ 这个命令用来更新最后一次提交,在你需要对最后一次提交内容进行修改时,又不希望增加新的提交,你就可以使用这个命令。

image-20200226113412858

git commit revert

​ 这个命令用来还原一次提交,但这个命令本身就是一次提交。

git commit reset

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

分支引用

你已经知道可以使用SHA、标签、分支和特殊的HEAD指针引用 commit.有时候这些并不足够,你可能需要引用相对于另一个 commit的 commit.例如,有时候你需要告诉git调用当前commit的前一个 commit,或者是前两个 commit.我们可以使用特殊的祖先引用字符来告诉git这些相对引用。这些字符为:

^ 表示父 commit
表示第一个父 commit

实验总结与体会:

在此次实验中,进行了对git的使用,因为之前有了解国这方面的内容,所以实验的难度不是很大,但在实验的测试题中,仍存在错误,如:

image-20200226094852060

思考题

​ 分布式版本控制 (DVCS) 是一种不需要中心服务器的管理文件版本的方法,但是它也可以使用中心服务器。更改可以被合并到 DVCS 的任何其他用户的系统中,因此可以实现非常灵活的工作流。

​ 它比集中的版本控制更灵活,因为它除了支持传统的(集中式)工作流,还支持其他各种工作流;它比集中式服务器快得多,因为大多数操作在客户机本地进行,而不需要网络操作。