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

    (二)初始配置Git

    (1)因为Git是分布式版本控制系统,所以,每个机器都必须自报家门:你的名字和Email地址。注意git config命令的--global参数,用了这个参数,表示你这台机器上所有的Git仓库都会使用这个配置,当然也可以对某个仓库指定不同的用户名和Email地址。

     

     

    (2)输入git config –list, 列出Git可以在该处找到的所有的设置;

    (3) 配置编缉器

    我的电脑里使用的编辑器是Visual Studio Code,输入git config --global core.editor "code --wait" 命令即可,让 Git 能与我的代码编辑器结合。

    (三)从头创建仓库

    (1)在对 Git 仓库进行 commit 或执行任何其他操作之前,需要一个实际存在的仓库。先在命令行中输入命令,在D盘建立一个空文件夹se2020-git-course,在该文件夹中创建另外一个文件夹new-git-project,并用cd命令进入该文件夹的目录下。

     

    (2)使用 git init 命令将当前目录初始化为Git仓库。显示的信息意思为:初始化了一个空的Git仓库,new-git-project目录下多了一个.git目录,是用来管理版本库的。

     

     

    (3)克隆现有仓库,此时可以看到在new-git-project下出现了一个course-git-blog-project的文件夹;

     

     (4)判断仓库的状态;git status 是了解 Git 的核心所在。它将告诉我们 Git 正在考虑什么,以及 Git 所看到的我们仓库的状态。使用cd命令转到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 – 表示没有任何待定的更改。

    使用cd命令将目录转到new-git-project文件下,在终端再次输入git status,出现如下结果;

    (四)git log

    (1)git log 命令:git log 命令用于显示仓库中所有 commit 的信息。默认情况下,该命令会显示仓库中每个 commit 的:SHA、作者、日期和消息。我在终端输入该命令,显示如下结果:

     

    (2)git log --oneline 命令:使输出结果更简短,并节省大量空间;

    (3)git log --stat 命令:用来显示 commit 中更改的文件以及添加或删除的行数;

    (4)git log -p 命令:可用来显示对文件作出实际更改的选项;

    (5)log show 命令:git show 命令将仅显示一个 commit

    (五)git add & git commit & git diff

    (1)先用cd命令将终端目录转向new-git-project下,创建一个文件,名叫index.html;再建立 js 和css 文件夹,并在文件下分别建立 app.js 和 app.css 文件,文件内容均为空;

    在终端输入git status命令,显示如下信息;

    在终端上运行以下命令,使用 git add 将 index.html 添加到暂存区,此时再次输入git status命令,查看当前状态;

     

    在终端上运行一下命令,使用git add 将 css 文件和 js 文件添加到暂存区,此时再次输入git status命令,查看当前状态;

    (2)提交 commit 命令:要在 git 中提交 commit,你需要使用 git commit 命令,运行这条命令将会打开你事先配置好的代码编辑器。打开代码编辑器后,在首行输入Initaial commit,作为commit的消息,保存并关闭编辑器的界面,回到我们的终端界面上;

    (3)再一次进行提交,提交完成后再终端输入 git status 查看当前状态;

    (4)使用git commit 的 -m 选项可以绕过编辑器,直接进行提交;

    (5)git diff 命令:工具可以在进行提交之前告诉我们已对文件进行了什么样的更改。

    (6)向项目所在目录添加了一个 Word 文档等文件,但是我不希望将该文件添加到仓库中。git 会看到这个新文件,所以在在运行 git status 时,它将显示在文件列表中。

    此时可以使用名称特殊的文件 .gitignore。将此文件添加到 new-git-project项目根目录。此时再次使用git status命令;

    (六)标签、分支

    (1)git  tag 标签 :与仓库的标签进行交互;输入 git tag -a v1.0 命令,此命令将打开代码编辑器,并等待为标签输入信息。我们输入"Ready for content"作为tag ,再输入 git tag,命令行会显示仓库中的所有标签。

    为了知道这个标签位于仓库的哪个位置。所以,我们需要调用一直在使用的 git log 命令。

    (2)上面我们用 git log 命令看到了我们标签,此时我们可以利用 git tag -d v1.0 删除这个标签;

    (3)git branch 命令:用来与 git 的分支进行交互;具体可以列出仓库中的所有分支名称、创建新的分支和删除分支;只输入 git branch,则 git 将列出仓库中的分支;我们可以看见当前只有master一个分支;

     (4)创建并切换分支;我们先用 git branch 创建分支sidebar , 再用命令 git checkout 切换到sidebar 分支上;此时利用git branch 查看当前所有分支;

    (5) 先将分支切换到master分支上,再使用git branch -d 命令删除 sidebar 分支;

    (6)在master分支上在index.html 文件上添加默认颜色

    (7)在 master 分支上,向 css/app.css 添加指定内容内容,提交后运行 git status;

    在终端输入 git log --oneline 命令;

    假定我们不确定是否喜欢新的背景色。所以我们可以在设置页面颜色的 commit 之前先设置一个sidebar分支;当然,首先我们必须要知道设置颜色的commit的sha为多少;再执行git branch sidebar ae6c985,创建指定位置的分支;输入git checkout 将分支转到sidebar上,再次运行命令 git log --oneline --decorate;

     (8)添加侧栏的操作;

    (9)更改master上的标题;

     (10)git log --oneline  --graph --all 命令:--graph 选项将条目和行添加到输出的最左侧。显示了实际的分支。--all 选项会显示仓库中的所有分支。

    (七)合并

    (1)git reset --hard HEAD^ 命令:

    (2)git merge <name-of-branch-to-merge-in> 命令:用来合并 git 分支;

    (3)要合并 sidebar 分支,必须实现确保位于 master 分支上,并运行:$git merge sidebar;

    (4)对文件执行如下的修改,提交;

    (5)使用git loh获取上一个commit的sha,得到我们需要的sha:c4625881

    (6)再sha=c4625881的这个commit上创建一个新的分支;

     (7)切换到新创建的分支上并在新创建的分支上面再次修改标题;合并两个分支,可以观察到冲突的产生;

    (8)解除冲突:进入编辑器中,删除所有带标识符的行,选择你想要留下来的那一行,提交,此时就解决了冲突的问题;

    (八)撤销更改

     (1)git commit --amend 命令:更改最近的 commit;

     (2)git revert 命令:用于还原之前创建的 commit;此命令可以将撤消目标 commit 所做出的更改,也可以创建一个新的 commit 来记录这一更改。

     (3)git reset 命令 :该命令被用来清除 commit;

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

    1、安装完毕后,在桌面上右击鼠标,有Git GUI Here 和Git Bash Here,那么两者有什么分别呢?

         (1)Git GUI : 图形用户界面;

         (2)Git Bash: Microsoft Windows使用的是Windows命令提示符,这是一个非Unix终端环境,所以我们需要Git Bash。Git Bash是一个适用于Microsoft Windows环境的应用程序,它为Git命令行体验提供了一个仿真层。相当于在window上通过Git Bash这个模拟的Unix命令行的终端出来,然后在这个终端里面做Git相关的版本控制。

    2、不知道如何翻阅git log显示的命令,以为只有屏幕显示的那几条,仔细学习了学习通的内容,才发现git 使用命令行分页器 less 浏览所有信息。

    3、出现了错误;执行这个命令的时候提示错误,百度上搜说删除index.lock文件,但是我用命令删除的时候,它显示没有该文件;最后发现是权限问题,D盘的权限没有打开,最后时候管理员权限打开git bash 就可以执行该命令了。而且,使用git add .命令可以直接将目录下所有文件和文件夹都上传至缓存区。

     

     

    4、在做实验时,终端输入git diff却没有得到预想的结果,最后发现修改文件保存后我将编辑器关闭了,所以运行 git diff 命令没有办法得到结果。

     

    5、删除分支时,出现了如下的错误。原因时我在删除分支时,没有将该分支转成别的分支,不能在某个分支上执行删除该分支的命令!

     

    6、分支实战前面的准备部分,切换到master分支后,运行git status没有出现working tree clean 或 working directory clearn,原因就是我没有再git add命令(将文件放入暂存区 )后提交文件(commit命令),该有的步骤一定不能少,要细心。

    7、老师在学习通上布置的任务点习题有一个我做错了,如下图所示;正确选项是“B”,原因是当我自己利用编辑器将文件进行修改后,没有将该文件放入暂存区(就是没有在提交前输入 git add 命令),所以在终端输入 git commit 时不会再将编辑器打开。

    四、实验总结与体会

    1、通过本次实验,我学习到了git 的相关操作,一些基本命令;了解了git 的强大也会自己使用git完成一些要求的操作;

    2、实验中,我遇到了许多大大小小的问题,大部分的问题都是细节上的问题,基本上跟着学习通的学习内容一步一步的完成不会有什么大错误,遇到问题,我也一直尝试通过自己思考去解决,收获到了很多;

    3、一些关于git的知识总结,被我放在了实验内容和实验中遇到的问题及解决上,在此不在赘述。

    五、思考题

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

     A:版本控制工具是任何一个协作开发项目所需要使用的一个很重要的基础工具。Git 在实现机制上,有三个关键点:

         (1)版本库的本地化

         (2)文件的快照保存

         (3)基于内容的寻址空间

  • 相关阅读:
    FHQ Treap(无旋 Treap)详解
    [CSP-S 2021] 廊桥分配 题解
    Splay Tree(伸展树)详解
    爬虫工程师也应该会的 NodeJS 知识(一)
    网站加密和混淆技术总结
    ip地址
    索引
    go try。。。catch
    python常见问题
    python实现发布订阅
  • 原文地址:https://www.cnblogs.com/Incoming22/p/12363625.html
Copyright © 2020-2023  润新知