实验一 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.实验过程

初次配置 git

设置用户名邮箱等基本信息,并设置好各项基本指令。

![]()

下载Sublime Text并设置其与git结合使用。

从头创建仓库

(1)使用 Git 新建一个仓库

创建一个叫做 se2020-git-course的目录,在该目录中,创建另一个目录,叫做 new-git-project,使用 cd 命令移到 new-git-project 目录下。

再使用git init来生成一个初始化生成一个空的 Git 仓库

![]()

(2)克隆现有仓库

输入命令 git clone,然后输入你要克隆的 Git 仓库的路径。使用此命令进行:git clone <https://github.com/udacity/course-git-blog-project&gt;

![]()

打开se2020-git-course的文件夹,可打开index.html。

![]()

(3)判断仓库的状态

使用git status命令查看仓库的状态。

![]()

此处说明处于休息状态,没有新的文件、没有对文件作出更改、暂存区没有任何需要 commit 的内容,没有更改或操作。

git log

(1)git log命令

cd到course-git-blog-project的项目中,输入git log命令。

![]()

此命令显示了这些commit的相关信息:sha值,作者,日期,信息。

(2)git log --oneline

![]()

此命令可实现:

  • 每行显示一个 commit
  • 显示 commit 的 SHA 的前 7 个字符
  • 显示 commit 的消息

(3)git log --stat

![]()

此命令可实现用来显示 commit 中更改的文件以及添加或删除的行数

(4)git log -p

![]()

此此命令会向默认输出中添加以下信息:显示被修改的文件、显示添加/删除的行所在的位置、显示做出的实际更改。

(5)git show

![]()

此命令可查看想要的sha值得commit相关信息。

git add& git commit&git diff

(1)在new-git-project文件夹中创建index.html、css、js文件夹,其中css包含app.css文件夹,js包含js.app文件夹,并在index.html中添加代码

(2)用git status检查是否在观察这个目录,并用git add 命令将这三个文件移到暂存区。

![]()

(3)提交 Commit

使用git commit 命令进入编辑器,在首行输入Initaial commit使commit提交。

![]()

![]()

(4)提交第二个commit

修改index.html代码并保存,运行git status。

![]()

用git add添加到缓存区,用git status查看,用git commit提交。

![]()

![]()

标签、分支

(1)git tag 命令

输入git tag -a v1.0,此时在代码编辑器中输入"Ready for content"作为tag。

输入git tag可观察到此时的tag

![]()

(2)删除标签

输入git tag -d v1.0来删除标签

![]()

(3)向以前的 commit 添加标签

用git tag -a v1.0 eff5d50来为其commit添加标签

git branch 分支

(1)git branch命令

git branch命令可以列出仓库中的所有分支名称、创建新的分支、删除分支

![]()

(2)创建分支

用git branch sidebar来创建名为sidebar的分支,用git checkout sidebar切换到sidebar分支。

![]()

![]()

(3)删除分支

运行git checkout master命令,切换到master分支,运行git branch -d sidebar命令,删除sidebar分支。

![]()

(4)高效分支

首先,确保保持相同的进度,并拥有相同的起始代码。在 new-git-project 项目中进行操作。该项目具有以下文件:index.html;``css/app.css(空文件);js/app.js(空文件)

在index.html文件中添加相应代码,删除前面建好的sidebar分支,所有文件暂存并提交到仓库,切换到master分支,运行 git status,确认出现working tree clean或working directory clean.

(5)分支实战

1.添加页面颜色

修改app.css,向其中加入:

body {

background-color: #00cae4;}

保存文件,然后将该文件添加到暂存区,并将其 commit 到仓库。 commit 的内容可写:Set background color for page 通过git log 检查commit 记录。

![]()

2.添加侧栏

用git branch sidebar 6afb29d设置页面颜色前的commit之前的分支并切换至此分支

![]()

向html文件中添加代码

<div class="container"> <main> </main> </div> <footer> Made with ♥ @ Udacity </footer>

此时可以commit所有修改。

合并

(1)git merge用来合并git 分支。

确保位于master分支上 用git merge sidebar就可以将sidebar合并到master上。

![]()

(2)大部分情况下,git 将能够成功地合并分支。但是,有时候 git 无法完全自动地进行合并。合并失败时,就称为合并冲突。

撤销更改

(1)使用git commit --amend可以更改最近的commit

![]()

(2)使用git revert可以还原最近的commit

![]()

(3)使用git rest会清除commit

![]()

2.实验过程中发生的问题与解决

(1)官网的下载速度非常慢,挂梯子也不好使,在国内网站找到了相同最新版本的文件安装成功。

(2)中途退出后找不到如何cd到项目,查询后使用pwd指令知道了当前的位置,再cd就成功了。

(3)克隆仓库时失败多次,后来发现是网速过慢问题,多尝试几次后速度正常。

(4)在使用git log时找不到其他的sha,发现方向键向下即可。

(5)一开始使用eclipse建立css,js,html文件,非常麻烦,后面查阅知道使用txt文件修改后缀即可。

(6)删除分支时忘记跳转至master分支,出现错误,认真查看实验指导了解。

实验总结与体会

通过本实验,我了解了git相关的一系列操作,包括建立仓库,复制仓库,对其中各种命令的使用,本实验非常繁琐,需要耐心实现并多次尝试。我以前从未了解过相关的知识,在学习了软件工程课程后,我才知道了这种分布式版本控制的重要性和方便性,我想这个系统能为单人或者多人协作的软件开发工作提供了很大的便利。如果要成为一名软件工程师,显然应该更加深入了解相关的知识。

思考题

阅读维基百科和百度百科 的Git词条,总结分布式分布式版本控制系统的核心机理

答:分布式:因为每个机器上都有完整的版本库,所以比起集中式来说数据丢失的可能性降低了很多,而且工作时对网络的需求也变小了。

因为多人协作时机器可能存在没联网或其他情况无法接收他人的推送,所以git为了方便推送,使用github来统一推送,个人把文件推送到github,然后其他人从github接受推送,这样就省略去了很多的过程。

版本控制:在编写程序时使用版本控制工具记录下版本。当你后面你想撤销的时候,可以使用版本号快捷的返回原版本。

![]()

声明:该文章系转载,转载该文章的目的在于更广泛的传递信息,并不代表本网站赞同其观点,文章内容仅供参考。

本站是一个个人学习和交流平台,网站上部分文章为网站管理员和网友从相关媒体转载而来,并不用于任何商业目的,内容为作者个人观点, 并不代表本网站赞同其观点和对其真实性负责。

我们已经尽可能的对作者和来源进行了通告,但是可能由于能力有限或疏忽,导致作者和来源有误,亦可能您并不期望您的作品在我们的网站上发布。我们为这些问题向您致歉,如果您在我站上发现此类问题,请及时联系我们,我们将根据您的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。