• 实验一 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

    (1)初次配置Git

      设置Git的用户名、邮箱,确保Git输出内容带有颜色标记,对比显示原始状态。

    (2)设置编辑器

      我选用的是Sublime Text编辑器,进行如下设置。

    2.创建仓库

    (1)创建项目目录  

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

     

    (2)克隆现有仓库

      在运行git init后,会在当前目录下初始化生成一个空的Git仓库。在终端上运行命令git clone,然后传入要克隆的仓库路径。

    这里有一个warning,我把https输成了http。

    如果要换一个名称,则输入如下命令。

    进入course-git-blog-project文件夹,用浏览器打开index.html文件,就可以看见克隆的blog网页。

    (3)判断仓库的状态

      运行git status命令,将显示很多信息,帮助我们了解仓库的状态。

     

    图中Utracked files是没有跟踪的文件。

     3.git log命令

    (1)git log 

      运行该命令:可以查看标题是何时被添加的,添加了这个标题的作者。

    (2)git log --oneline命令

      运行该命令:每行显示一个 commit;显示 commit 的 SHA 的前 7 个字符;显示 commit 的消息。

     

    (3)git log --stat命令

      运行该命令:显示被修改的文件;显示添加/删除的行数;显示一个摘要,其中包含修改/删除的总文件数和总行数。

    (4)git log -p命令

       git log 命令具有一个可用来显示对文件作出实际更改的选项。

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

    (5)处理太多滚动操作

      向git log提供要查看的commit的SHA,或者使用git show命令,就能显示特定的commit的详情。

    4.git add&git commit&git diff

    (1)新建文件

      进入new-git-project目录,创建一个名为index.html的文件,并添加一些起始代码;建立js和css文件夹,并在文件下分别建立app.js和app.css文件,文件内容为空。

     

    添加代码

     这里我在添加代码时vi 后面的文件名没有加上.html,这样其实是新建了一个index文件,是错误的。

    下图为改正后的截图。

     此时运行git status命令,结果显示git还没有跟踪这些文件。

     

    (2)git add

      想要将文件提交到仓库中,首先需要将文件从工作目录移到暂存区,git add命令可以将文件从目录移到暂存区。

     

    此时三个文件都移到暂存区了。可以使用git add.将所有文件一次性都移到暂存区中。

    (3)提交Commit

      在提交之前,确认编辑器配置完毕。运行git commit命令,等待一会后编辑器会打开并跳出一个窗口。 

    在编辑器窗口首行输入消息“Initial commit”

    输入消息后记得保存,然后关闭编辑器,即完成提交。

    (4)Commit-添加更改

      在index.html中的body标记中添加代码。

    运行git status,结果可以看到index.html已更改。

     

    使用git add命令将修改后的index.html文件移到暂存区,然后运行git commit命令提交第二个commit,并添加提交说明Add header to blog。

     使用git log查看刚刚提交的commit。

    (5)git diff

      git diff命令可以用来查看已被加入但是尚未提交的更改。运行该命令会显示:已经修改的文件;添加/删除的所在行的位置;执行的实际更改。

     (6)gitignore

      如果想要某个文件保留在项目的目录结构中,但是确保它不会意外地提交到项目中,可以使用名称特殊的文件.gitignore。

    先新建文件project.docx和.gitignore,将project.docx添加进.gitignore文件中。

    5.标签、分支

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

      运行git tag -a v1.0将为最近的commit添加标签,如果想给仓库中特定的commit添加标签,只需要提供添加标签的commit的SHA即可。

    运行git log查看标签

     

     (2)git branch分支

      列出仓库中的所有分支名称

    (3)创建分支、git checkout命令、活跃分支

      创建分支sidebar,此时如果进行commit的话,将会添加到master分支,使用git checkout命令则可切换到sidebar分支,然后运行git log --oneline命令可看到HEAD指示符指向sidebar,现在提交的任何commit将添加到sidebar分支。通过git branch命令可查看到当前活跃分支为sidebar。

     

     (4)删除分支

       当git branch -d无法删除当前所在分支时,需要切换分支,或者使用git branch -D进行强制删除。

     (5)添加页面颜色

      在master分支上,向css/app.css中添加代码,保存后将文件添加到暂存区,并将其提交到仓库,输入消息Set background color for page,git log检查commit记录。

    (6)添加侧栏

    此时在master分支提交的“Set background color for page”commit已经没有了。

    查看app.css文件,里面内容是空的,因为内容存储在另一个分支上。

    向html文件添加<aside>代码,为页面添加一个侧栏。完成之后,即可commit更改了。用git log --oneline查看commit。

     (7)更改master上的标题

      更改后保存index.html文件并进行commit,消息为“Improve site heading for SEO”,用git log --oneline检查。同时查看所有分支。

    6.合并

    (1)合并分支

      可将不同分支上的更改合并到一起。

    (2)合并冲突

      如果完全相同的行在不同的文件中更改了,将产生合并冲突。

    制造冲突:

    在master分支上更改标题,,git log检查;

    在一个commit上创建一个heading-update分支;

     切换到heading-update分支再次更新标题;

    切换到master分支上,进行合并分支,合并失败;

    (3)解决合并冲突

      在编辑器中进行修改

    修改后

    (4)commit合并冲突

      修改后保存,将文件添加到暂存区,git commit,用git log --oneline检查

    7.撤销更改

    (1)更改最后一个commit

    (2)git revert命令

     (3)git reset命令

      HEAD指向de4fb37上的master,运行git reset --mixed HEAD^会把commitde4fb37中做出的更改移到工作目录中。

     第一次错误是把head拼错了。

    四、实验总结与体会

      Git是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理,具有许多功能。本次实验跟着学习通上老师写的步骤做下来基本上没遇到什么问题,一些错误是单词拼写上的错误。通过本次实验,基本掌握了git的基本指令和分支管理指令,但还不够熟练,还需要多做多练习。

    五、思考题

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

    答:分布式版本控制系统DVCS。在这类系统中像Git,Mercurial,Bazaar以及Darcs等,客户端并不只提取最新版本的文件快照,而是把原始的代码仓库完整地镜像下来。这么一来,任何一处协同工作用的服务器发生故障,事后都可以用任何一个镜像出来的本地仓库恢复。因为每一次的提取操作,实际上都是一次对代码仓库的完整备份。

           适合分布式开发,强调个体;公共服务器压力和数据量不会太大;速度快灵活;任意两个开发者之间可以很容易的解决冲突;离线工作。 但学习周期相对而言比较长;不符合常规思维;代码保密性差,开发者把整个库克隆下来可以完全公开所有代码和版本信息。

     

  • 相关阅读:
    内敛函数
    墓碑文件
    java默认继承
    Question2Answer初体验
    yii 事物
    情商
    jsonp跨域
    CDbConnectionExt.php 23.2实现数据库的主从分离,该类会维护多个数据库的配置:一个主数据库配置,多个从数据库的配置
    图片服务器规划漫谈
    c语言中返回结构体的函数(结构体可以被赋值,类型相同的结构体可以相互赋值)
  • 原文地址:https://www.cnblogs.com/lldkla/p/12399341.html
Copyright © 2020-2023  润新知