实验一 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)实验内容结果的截图
2)实验过程中发生的问题与解决
实验内容1):在官网上寻找下载界面(https://git-scm.com/downloads),选择和自己的设备相应的版本下载安装,安装过程中的选项全为默认。
实验内容2):安装完毕后,在CMD中配置git,包括设置用户名、用户邮箱和git的颜色标记,具体见图2-1。
图2-1 git初始设置
在所需项目目录下需先建立一个git仓库才能进行后续操作,用git init命令创建仓库,如图2-2所示。
图2-2 git init 命令(1)
在使用git init命令前,应该转移到需要的项目目录下,在这里为该实验创建一个项目目录,并用cd转移到该目录下,再使用git init命令,如图2-3;
图2-3 git init 命令(2)
git status命令显示git正在考虑什么和仓库的状态,如2-4所示,此时我没在该项目目录下做出任何操作,它的反应如下。它再之后的操作中有很大的作用。
图2-4 git status(无操作)
实验内容3):git log命令可以显示仓库中所有的commit的信息;git log --oneline可以在git log命令的基础上,更改commit信息的排列方式,使我们可以更方便地查找所需的commit数据;git log --stat可以显示 commit 中更改的文件以及添加或删除的行数;
git log -p命令可以用来显示对文件作出实际更改的选项。如图3-1所示;
图3-1 git log
git add可以将文件从工作目录转移到暂存区,以方便git跟踪,而后使用git commit命令提交commit。在这个过程中应用git status命令时时观察git的状态,如图3-2;
图3-2 git add && git commit 命令的结合使用
git diff可以显示已经修改的文件及其具体情况,如图3-3所示;
图3-3 git diff命令
实验内容4):Git tag 可以当前分支打标签,以便后续查看。
图4-1 git tag命令
图4-2 git tag (代码编辑器)
git branch命令可以列出本地分支、创建新的分支、删除分支(使用git branch -d “分支名”命令)。在创建新分支后,可以用git checkout “分支名”命令切换分支,还可以用git log --oneline命令查看各个commit的所属分支,如图4-3所示。
图4-3 git branch命令
git commit命令一般和git add命令配合使用,其作用在git add部分已经说明。在这里,我谈谈关于我在使用git commit命令时遇到的问题,如图4-4所示,在把项目目录下的文件放入仓库时,有一个文件却放不进仓库里。
图4-4 问题
首先我试着把该文件再单独操作一遍,却仍旧没有效果,如图4-5。
图4-5 解决方法1
然后我试着操作所有文件,但是还是没有效果,如图4-6。
图4-6 解决方法2
最终,我使用了git commit -m “...”命令和git push origin master命令,强制把css/app.css文件放到了仓库中,如4-7。
图4-7 解决方法3
实验内容5):git revert可以还原更改的commit,使用该命令时,需在后面加上需修改的commit序列号的前七位,如图5-1所示。
图5-1 git revert
在这里因为我在使用git revert命令前合并了分支,所以这里出现了错误。
补充:git merge
大部分情况下,git 将能够成功地合并分支。但是,有时候 git 无法完全自动地进行合并。合并失败时,就称为合并冲突。
如果出现合并冲突,git 将尝试尽可能合并多的内容,然后将留下特殊选项(例如 >>>
和 <<<
),告诉程序员需要从何处手动修复,如下图:
在这里,分支master把Adventure改为了Quest,分支heading-update又把Adventure改为了Crusade,导致在合并这两个分支后,会出现合并冲突,最后git会在文件里留下如上图所示的特殊选项供程序员了解情况。
实验总结与体会:(以下内容根据各自实验情况填写)
在本次实验中我熟悉了git各命令的作用,并借此了解了git的工作机制。
思考题:(以下内容根据各自实验情况填写)
阅读维基百科和百度百科 的Git词条,总结分布式分布式版本控制系统的核心机理
分布式版本控制的客户端并不只提取最新版本的文件快照,而是把代码仓库完整地镜像下来。这么一来,任何一处协同工作用的服务器发生故障,事后都可以用任何一个镜像出来的本地仓库恢复。因为每一次的提取操作,实际上都是一次对代码仓库的完整备份。
Git与常用的版本控制工具 CVS, Subversion 等不同,它采用了分布式版本库的方式,不必服务器端软件支持,使源代码的发布和交流极其方便。