实验一 GIT 代码版本管理
实验目的:
- 了解分布式分布式版本控制系统的核心机理;
- 熟练掌握git的基本指令和分支管理指令;
实验内容:
- 安装git
- 初始配置git ,git init git status指令
- 掌握git log ,git add ,git diff 指令
- 掌握git tag git branch,git commit 指令
- 掌握git revert 指令
实验记录:
1)实验内容结果的截图
1.安装
在浏览器输入网址 http://git-scm.com, 进入Git官网
笔者PC使用的是windows 10 系统,点击上方图片红框区域系统会自动为电脑匹配最佳版本。
安装Git时一直点击下一步即可。最后测试是否安装成功,效果如下图所示。
2.初始配置git ,git init git status指令
笔者使用的Git代码编辑器为sublime text
下载链接:https://pan.baidu.com/s/1aYNyy5bRS538HeqdtUY_Kg
提取码:unxj
时间为永久有效
git init 新建一个仓库
git clone [url] 调用我们将在终端上运行的命令 git clone,然后传入要克隆的 Git 仓库的路径。首先需要验证终端位置,在克隆任何内容之前,确保命令工具已定位于正确目录下。克隆项目会新建一个目录,并将克隆的git仓库放入其中。而事实是无法创建嵌套的Git仓库。
为此,为了确保终端的当前目录没有位于 git 仓库中,实验者需要分别建立两个文件夹来保管项目仓库。(不是在 new-git-project 文件夹下建立 course-git-bolg-project 文件夹)
git status 是了解 Git 的核心所在。它将告诉我们 Git 正在考虑什么,以及 Git 所看到的我们仓库的状态。在目录下运行 git status ,查看目录里的文件是否在 git 仓库
注意:
- 重命名可能会进入github账户登录界面,因为github的服务器在国外,加上墙的原因。如果是克隆大的项目,可以先在国内的码云注册,利用码云的github项目克隆功能,将github项目克隆到国内服务器。然后用git clone 从码云clone。方法是重复操作多次即可。
- 上述紫色文字部分的意思就是叫你在 se2020-git-course 文件夹下执行 git clone 命令。
3.掌握git log,git add,git diff指令
git log 用于显示仓库中所有 commit 的信息。默认情况下,该命令会显示仓库中每个 commit 的:
- SHA 每个SHA都是唯一的,只需知道前6—8个字符即可
- 作者
- 日期
- 消息
插播课堂小知识:浏览信息快捷键
- 按行向下滚动 j
- 按行向上滚动 k
- 按页向下滚动 空格键
- 按页向上滚动 b
- 退出 q
git log--oneline
- 每行显示一个 commit
- 显示 commit 的 SHA 的前 7 个字符
- 显示 commit 的消息
git log --stat
- 显示被修改的文件
- 显示添加/删除的行数
- 显示一个摘要,其中包含修改/删除的总文件数和总行数
git log -p 此命令会向默认输出中添加以下信息:
- 显示被修改的文件
- 显示添加/删除的行所在的位置
- 显示做出的实际更改
补充:git log -p fdf5493 和 git show fdf5493 能显示特定 commit 的详情
4.掌握git tag git branch,git commit 指令
开始操作之前,调整一下思路 新建文件--->将文件放入暂存区--->提交文件到仓库,于是git就可以跟踪文件了
第一步:新建几个希望 git 开始跟踪的文件。在 new-git-project 文件夹下按实验要求建立相关文件,执行 git status。可用看出,尽管尚未对 git 执行任何特殊操作,但是它已经在观察这个目录(因为它是 git 项目),并且知道我们创建了几个新的文件。git status 命令的输出同样十分简洁地告诉我们 git 没有跟踪这些文件。
第二步:将这些文件从工作目录移到暂存区。使用 git add 命令
第三步:将这些文件从暂存区提交到仓库。使用 git commit 命令,运行这条命令将会打开之前配置好的代码编辑器。在首行输入 Initaial commit ,保存文件关闭窗口。提交完毕。(文本 "Initial commit" 并不特殊,只是第一个 commit 的常用消息。如果你想使用其他消息,完全可以!)
git diff 此命令用于,你修改了一些文件,又没有提交,过了一段时间后你忘记了你修改了什么,可以用 git diff 查找此类信息
插播课堂小知识:
如果你想将某个文件保留在项目的目录结构中,但是确保它不会意外地提交到项目中,可以使用名称特殊的文件** .gitignore ** 。将此文件添加到 new-git-project项目根目录。你只需列出希望 忽略或者说不跟踪 的文件名,git 将忽略这些文件。
git tag -a v1.0向项目中添加了一个带 注释 的标签 v1.0 。"-a"告诉 git 创建一个带注释的标签。带注释的标签包含了大量的额外信息,例如:
- 标签创建者
- 标签创建日期
- 标签消息
执行命令后,将会打开代码编辑器,并等待你为标签输入信息。我们输入"Ready for content"作为tag。(记得保存并退出编辑器)
git tag查看仓库所有标签。此时再使用 git log 查看该标签位于仓库中哪个位置。
git tag -d v1.0 删除标签v1.0
git branch 它可以用来:
- 列出仓库中的所有分支名称 (只输入 git branch 即可,活跃分支名称旁边会显示一个星号)
- 创建新的分支 (git branch sidebar 创建了一个sidebar分支 ;git checkout sidebar 切换到sidebar分支上)
- 删除分支 (git branch -d sidebar 注意,无法删除当前所在的分支。因此要删除 sidebar 分支,你需要切换到 master 分支,或者创建并切换到新的分支.要强制删除,你需要使用大写的 D 选项,即 git branch -D sidebar)
高效分支
准备工作:
- 删除本地仓库 new-git-project
- 新建仓库 new-git-project
- 按要求添加文件
开始实战:
- 更改1 添加页面颜色
- 更改2 添加侧栏
- 更改3 更改 master 上的标题
主题分支(例如 sidebar)的作用是让你做出不影响 master 分支的更改。当你在主题分支上做出更改后,如果觉得不想要该分支上的更改,则可以删掉该分支,或者你决定要保留更改,则可以将该分支上的更改与其他分支上的更改合并。
git merge 合并分支
注意:当相同的行在要合并的不同分支上做出了更改时,就会出现合并冲突。git 将在合并途中暂停,并告诉你存在冲突,以及哪些文件存在冲突。要解决文件中的冲突:
- 找到并删掉存在合并冲突指示符的所有行
- 决定保留哪些行
- 保存文件
- 暂存文件
- 提交 commit
5.掌握git revert 指令
git revert 还原一些更改的 commit;git reset 命令用来重置(清除)commit。
2)实验过程中发生的问题与解决
由于粗心git编辑器一开始路径设置出错,一直想的是怎么去重新设置路径,耽误了很长时间,在老师的指导下,换个角度直接修改文件名,即把实际路劲直接改为之前设置错误的路径即可。
实验总结与体会:
本次实验最大的问题就是对博客园使用非常的不熟悉,上传的图片加载不出来,实验报告格式也很差。本次实验结束后,一定会多多查阅资料,争取在下次写博客时能够写的很漂亮。
学习了Markdown编辑器的一些基础语法后,又重新做了一次实验,修改了本次实验报告。之前确有很多地方一知半解,只是机械的按照老师给的知道来做,第二次实验有了更深层次的了解,感觉很好,就是很费时间。
思考题:
阅读维基百科和百度百科 的Git词条,总结分布式版本控制系统的核心机理
Git是分布式版本控制系统,那么它就没有中央服务器的,每个人的电脑就是一个完整的版本库,这样,工作的时候就不需要联网了,因为版本都是在自己的电脑上。既然每个人的电脑都有一个完整的版本库,多个人协作:比如说自己在电脑上改了文件A,其他人也在电脑上改了文件A,这时,你们两之间只需把各自的修改推送给对方,就可以互相看到对方的修改了。