实验一 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 指令
三 实验记录:
3.1Git的安装与配置
设置个人的Git 用户名 、邮箱,并确保 Git 输出内容带有颜色标记,对比显示原始状态。运行结果如下图所示。
选用并设置Sublime Tex代码编辑器。
3.2从头创建仓库
使用mkdir - 创建项目目录,在当前目录下使用 git init 命令初始化生成一个空的 Git 仓库。
输入命令git clone,实验使用以下 URL :https://github.com/udacity/course-git-blog-project 作为要克隆的 Git 仓库的路径。并用git status命令检查仓库状态。
3.3git log命令
将命令转移到项目目录下,并进行相应检查。
运行git log命令显示仓库中所有 commit 的信息,包括SHA、作者、日期和消息。
git clone --oneline 命令,每行显示一个 commit,及其SHA 的前 7 个字符 和消息。
git log --stat用来显示统计信息,包括 commit 中更改的文件以及添加或删除的行数。
git log 命令可用来显示对文件作出实际更改
git show 命令将仅显示一个 commit,将 SHA 作为最后一个参数提供给命令。
3.4 git add& git commit&git diff
创建一个index.html的文件,并添加一些起始代码。建立js和css文件夹,并在文件下分别建立app.js和app.css文件,文件内容可为空。
使用 git add 将 index.html 添加到暂存区,再暂存另外两个文件。
在 git 中提交 commit,编辑器将会打开,保存文件并关闭编辑器窗口,如下图所示完成第一次提交。
修改index.html 中的 body 标记,进行第二次提交。
使用 git add 命令将文件移到暂存区,并使用 git status 验证文件是否位于暂存区。提交第二个 commit ,并添加提交说明 Add header to blog。
git diff命令用来查看已被加入但是尚未提交的更改。
若项目所在目录添加了一个 Word 文档等文件,运行git status它将显示在文件列表中。
3.5标签、分支
项目到目前为止的 git log 输出结果如下所示。
使用 git tag 命令与仓库的标签进行交互,并验证标签位于仓库中。
检查位于仓库的哪个位置。
git branch命令与 git 的分支进行交互,用于列出仓库中的所有分支名称、创建新的分支和删除分支。
根据提供的名称创建对应的分支。例如创建一个叫做"sidebar"的分支。并使用git checkout命令分支之间进行切换。
日志输出结果如下所示。
下图降显示分支,以及用提示符将显示活跃分支。
将分支从sidebar切换到master,删除当前所在分支,否则即使强制也无法删除。
高效分支,如上先创建相应文件,删除前面建好的siderbar分支,所有文件暂存并提交到仓库,切换到master分支,再运行git status,确认出现 working tree clean 或 working directory clearn。
更改 1 - 添加页面颜色
确保位于master分支上,并向css/app.css添加以下内容。
更改 2 - 添加侧栏
创建一个 sidebar 分支,并切换到新的 sidebar 分支。
通过向 HTML 文件添加以下
更改 3 - 更改 master 上的标题
切换到 master 分支并更新页面标题。将页面的 标题从"Expedition"改为吸引人的"Adventure"。
同时查看所有分支
3.6合并
确保位于正确项目中,切换到master分支,运行git status,确认出现 working directory clean。
位于master分支上合并sidebar分支。
人为制造合并冲突
在两个不同的分支上更改同一页面的标题,更改 master 分支上的标题,
在分支上更改标题 1
在分支上更改标题 2
合并冲突
解决合并冲突
3.7撤销更改
向 commit 中添加忘记的文件。
使用git revert命令还原一些更改的 commit。
git reset命令用来重置(清除)commit。
实验总结与体会:
通过本次实验我理解和掌握了git的基本指令和分支管理指令。在实验过程中也遇到了一些问题,如在删除分支时未切换到正确的分支,普通或强制都无法删除对应分支,应当注意不同问题下分支的切换。在解决合并冲突时,无法确定删除哪行代码,通过查找资料最终解决问题。
在发现问题解决问题的过程中,我对git的各种命令有了更深入的理解,对于软件的运用更加熟练。
思考题:
阅读维基百科和百度百科 的Git词条,总结分布式版本控制系统的核心机理。
Git是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。分布式相比于集中式的最大区别在于开发者可以提交到本地,每个开发者通过克隆(git clone),在本地机器上拷贝一个完整的Git仓库。包含适合分布式开发,强调个体。公共服务器压力和数据量都不会太大。速度快、灵活。任意两个开发者之间可以很容易的解决冲突。离线工作等特点。
分布式的版本控制就是每个人都可以创建一个独立的代码仓库用于管理,各种版本控制的操作都可以在本地完成。每个人修改的代码都可以推送合并到另外一个代码仓库中。