实验一  GIT 代码版本管理

实验一  GIT 代码版本管理css

 

实验目的:html

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

2)熟练掌握git的基本指令和分支管理指令;github

 

实验内容:服务器

1)安装git网络

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

3)掌握git log ,git add ,git diff 指令编辑器

4) 掌握git tag git branch,git commit 指令分布式

5)掌握git revert 指令ide

 

实验记录:

1)实验内容结果的截图

 

1.安装git

具体详细过程可参照:http://www.javashuo.com/article/p-kdpizzro-ew.html

 

2.初始配置git

在开始使用 Git 以前,先须要配置 Git,即设置用户名和邮箱,截图以下:

 

3.从头建立仓库

cd到e盘,而后运行mkdir -p se2020-git-course/new-git-project && cd $_这条命令,即建立se2020-git-course目录,并可在该目录下建立另外一个叫做new-git-project

的子目录;而后使用git init命令,在当前初始化生成一个空的git仓库,截图以下:

 使用git clone命令来克隆现有仓库,这里克隆的git仓库路径(通常为URL)是https://github.com/udacity/course-git-blog-project,这里须要确保终端的当前工做目录没有位于 Git 仓库中即不在.git的目录下.git目录是一个库),截图以下:

完成后,可查看course-git-blog-project文件夹,截图以下:

继续使用git status命令,截图以下:

 这里输出结果的意思是:

On branch master –  Git 位于 master 分支上,(也就是默认分支)。

Your branch is up-to-date with 'origin/master'. – 由于咱们使用 git clone 从另外一台计算机上复制了此仓库,所以这部分告诉咱们项目是否与所复制的仓库保持同步状态。咱们不会在其余计算机上处理该项目,所以这一行能够忽略。

nothing to commit, working directory clean – 表示没有任何待定的更改。

 

4.git log 的命令

在终端运行git log命令,该命令会显示仓库中每一个commit的SHA,做者,日期和消息。截图以下:

 使用git log --oneline命令,能够更改仓库信息的显示方式:每行显示一个commit,只显示commit的SHA的前7个字符,显示commit的消息。截图以下:

运行git log --stat,此命令用来显示commit中更改的文件以及添加或删除的行数。截图以下:

 运行git log -p-path),此命令用来更改git log显示的方式,会在默认输出中显示被修改的文件,添加、删除的行所在的位置以及作出的实际修改。截图以下:

 运行git show +SHA 命令将显示特定 commit 的详情它的输出显示和git log -p+SHA的彻底同样。截图以下:

 

5.git add& git commit& git diff

首先,进入到new-git-project目录下,在其目录下建立一个index.html文件,并添加以下一些起始代码:

<!doctype html>

<html lang="en">

<head>

    <meta charset="utf-8">

    <title>Blog Project</title>

    <meta name="viewport" content="width=device-width, initial-scale=1">

    <meta name="description" content="">

    <link rel="stylesheet" href="css/app.css">

</head>

<body>

    <script src="js/app.js"></script>

</body>

</html>

 而后,继续在其目录下创建js和css文件夹,并在文件夹下分别创建app.js和app.css文件,可为空。运行git status命令,可看到咱们建立了几个新的文件,可是这几个文件并无被git跟踪。截图以下:

 暂存文件

运行git add index.html命令,将index.html添加到暂存区,结果用git status来显示。index.html此时位于Changes to be committed暂存区分类下)截图以下图所示:

 同理,运行git add css/app.css js/app.js命令,暂存另外两个文件。截图以下:

 提交commit

在提交commit以前,先进行代码编辑器的配置,先安装subline Text,再运行git config --global core.editor "'\E:\Sublime Text 3\Sublime Text 3\sublime_text.exe' -n -w"命令,再运行git commit命令。截图以下:

 

 在第一行位置输入Initaial commit (可为其余),点击保存,并关闭代码编辑器的窗口。完成第一个commit。截图以下:

 提交添加更改后的commit

index.html中的body提交以下内容:

<header>

   <h1>Expedition</h1>

</header>

运行git status命令,查看此时状态,截图以下:

同理与第一个commit相同操做,先使用git add命令将文件移到暂存区,再使用 git status 命令验证文件是否位于暂存区,最后使用 git commit命令提交commit,并添加提交说Add header to blog。完成第二我的添加更改的commit操做。截图以下:

 git diff

index.html中的标题"Expedition"改成"Adventure",保存文件后,运行git diff命令(与git log -p结果同样),此命令会显示已经修改的文件,添加/删除的行所在的位置,执行的实际更改 。截图以下:

 gitignore

见实验分析错误部分

 

6.标签、分支

git tag

确保在new-git-project项目的目录下,运行git tag -a +标签名命令向最近的commit添加标签(v1.0是标签的名称,-a表示git建立的是一个带建立者,日期,消息等额外信息的标签),会打开代码编辑器,输入Ready for content做为tag。截图以下:

 保存并退出编辑器,运行git tag命令,验证已经向项目中添加了标签,再运行git log,)(git log --decorate)获得此标签在仓库的位置信息。git tag -d +标签名,此命令表示删除指定标签。截图以下:

 git tag -a +标签名 +已经commit的SHA,此命令表示向仓库的指定Commit添加标签,以 git tag -a v2.0 为例,截图以下:

 建立分支

运行git branch命令,将列出仓库中全部分支,运行git branch +分支名称,将建立对应分支,运行git chenkout +指定分支名称,将切换至指定分支。截图以下:

 运行git log --oneline,查看此时状态,HEAD指向的是当前分支,此时提交的commit都会添加到此指向分支。截图以下:

 活跃分支

此时再次运行git branch命令,列出全部仓库中分支,其中活跃分支名称旁边带有星号。截图以下:

 删除分支

运行git checkout master命令,切换到master分支,运行git branch -d sidebar命令,便可删除sidebar分支(这是未向siderbar分支添加commit的状况,如果已添加,须要运行git branch -D sidebar进行强制删除)。截图以下:

 高效分支

new-git-project目录下有index.html,css/app.css(空文件),js/app.js(空文件),其中index.html内容以下:

<!doctype html>

<html lang="en">

<head>

    <meta charset="utf-8">

    <title>Blog Project</title>

    <meta name="viewport" content="width=device-width, initial-scale=1">

    <meta name="description" content="">

    <link rel="stylesheet" href="css/app.css">

</head>

<body>

    <header>

        <h1>Expedition</h1>

    </header>

    <div class="container">

        <main>

<div class="container">

    <main>

    </main>

</div>

<footer>

    Made with ♥ @ Udacity

</footer>

        </main>

    </div>

    <footer>

        Made with ♥ @ Udacity

    </footer>

    <script src="js/app.js"></script>

</body>

</html>

 运行git add +三个文件名,将全部文件暂存到仓库,再运行git commit提交到仓库。截图以下:

 更改-添加页面颜色

css/app.css添加如下内容,以添加页面颜色。

body {

    background-color: #00cae4;

}

运行gid add css/app.css命令将文件添加到暂存区,再运行git commit提交到仓库。截图以下:

 更改-添加侧栏

运行git log --oneline命令,再运行git branch siderbar +SHA(不肯定是否喜欢新的背景色,能够选在设置页面颜色的commit以前的SHA)。截图以下:

 运行git checkout siderbar命令,再运行git log --oneline,以验证上一步。截图以下:

 HTML文件中<main>中添加如下代码,运行gid add index.html命令将文件添加到暂存区,再运行git commit提交到仓库,运行git log --oneline命令,显示以下。截图以下:

<div class="container">

        <main>

<div class="container">

    <main>

    </main>

</div>

<footer>

    Made with ♥ @ Udacity

</footer>

 更改-master上的标题

运行git checkout master命令切换分支,再将HTML的<h1>标题Expedtion改成Adventure,,运行gid add index.html命令将文件添加到暂存区,再运行git commit提交到仓库,运行git log --oneline命令,显示以下。截图以下:

 运行git log --oneline --graph --all命令,显示仓库中全部分支。截图以下:

 

7.合并

合并

master分支上,运行git merge siderbar命令,进行分支的合并。截图以下:

 合并冲突

master分支上HTML <h1>标题"Adventure"改成"Quest",运行gid add index.html命令将文件添加到暂存区,再运行git commit提交到仓库,运行git log --oneline命令,显示以下。截图以下:

 运行git log --oneline命令,再运行git branch heading-update +SHA(建立一个不是从master分支上分叉的分支,选择master的commit以前的SHA)。截图以下:

 运行git checkout heading-update命令切换分支,HTML<h1>标题"Adventure"改成"Crusade",运行gid add index.html命令将文件添加到暂存区,再运行git commit提交到仓库,运行git log --oneline --graph --all命令,显示以下。截图以下:

 运行git merge heading-update命令,出现合并冲突,再运行git status命令,显示index.html存在合并冲突。截图以下:

 用代码编辑器打开index.html,将全部带有冲突指示符的行删除,选择保留哪些行,并可进行修改。截图以下:

 

 

 运行gid add index.html命令将文件添加到暂存区,再运行git commit提交到仓库。截图以下:

 

8.撤销更改

更改最近的commit

运行git commit --amend命令,代码编辑器将打开,显示原始信息,可进行修改,保存并关闭编辑器,即完成。截图以下:

 还原commit:

HTML<h1>标题"Adventure Quest"改成"Crusades",运行git log --online --graph,再运行git revert +SHA(为最近的SHA),返回查看标题。截图以下:

 

 

 重置

git reset --hard 选项清除 commit

git rest --soft 选项将 commit 的更改移至暂存区

git rest --mixed 选项取消暂存已被 commit 的更改

 

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

问题一:

 错误缘由:打错了路径的单双引号,修改以下便可

 问题二:

根据实验步骤建了.gitignore文件,project.docx文件,并向.gitignore文件中添加了一行project.docx

 但却显示找不到这个文件

运行git status命令,显示project.docx文件并未隐藏

 百度也一直未解决,因而换了一种方法,在.gitignore文件中的一行project.docx前面添加了*,忽略此文件,再次运行git status命令。便可达到效果。然而原来的过程还未找到错误的地方。

 

实验总结与体会:

   一开始看到那么多试验内容以为有点冗长,不太想动手,因而就根据一节节的实验内容天天分着作一点,边作边写实验记录的文档,因此这看起来很长的文档,其实是天天一点点累积起来的。这次的git实验是一个验证性的实验,基本是跟着步骤来就能够,过程当中偶尔也会出现一些小错误,但基本上上网查查或者问问同窗也基本能解决。因此就算是困难的事情分解着天天坚持作一点,一点点去克服,最终也会水到渠成。

 

思考题:

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

 答:分布式版本控制又称去中心化版本控制,便是一种不须要中心服务器的管理文件版本的方法,可是它也可使用中心服务器。更改能够被合并到 DVCS 的任何其余用户的系统中,所以能够实现很是灵活的工做流。它容许软件开发者能够共同参与一个软件开发专案,可是没必要在相同的网络系统下工做。以分散式版本控制方法,做出软件版本控制系统。

相关文章
相关标签/搜索