实验一GIT代码版本管理

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

       通过下载群里老师给的安装包,成功安装git2.初始配置git  

        在开始使用git之前,要配置git,在命令行工具中运行配置代码。

    (1)配置git

          

git用户名为“lizhenzhen",git邮箱为"2379464960@qq.com"

  (2)配置代码编译器

       使用Sublime Text编译器,所以要修改git默认编译器为Sublime Text编译器。

      路径C:Program FilesSublime Text 3sublime_text.exe是我电脑上配置sublime的路径。

2.从头创建仓库

  (1)创建项目目录

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

           

 (2)git init 命令

           在终端上运行git init指令,该指令会在当前目录下初始化生成一个空的git仓库。

           

          运行 ls-la指令,可以显示当前目录下被隐藏的文件或文件夹

           

   (3)克隆现有仓库

  在终端上运行git clone 指令,然后传入要克隆的git仓库的路径,要确保终端的当前工作目录没有位于git仓库中,即需要分别建立两个文件夹来保管项目仓库。

            

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

           

            

  (4)判断仓库的状态

           使用git status命令,git status是了解git的核心所在, git status 命令将显示很多信息,具体取决于你的文件状态、工作目录和仓库。

            

 3.git log 

      克隆course-git-blog-project 仓库后,使用命令行转到项目的目录下。可以看到 git status 的输出结果是:"nothing to commit, working directory clean",意味着我们可以继续并检出该项目了!用代码编译器打开html文件。

            

    (1)在终端运行 git log 命令

             

git log 命令用于显示仓库中所有 commit 的信息

       (2)git log --oneline

       git log --oneline可以使输出结果更简短,并节省大量空间

              

          (3)git log --stat

   git log --stat可以用来显示 commit 中更改的文件以及添加或删除的行数

              

           (4)git log -p

     git log -p可用来显示对文件作出实际更改,运行该命令并查看显示结果。

           

          (5)显示特定 commit 的详情

 有两种实现方式:

      1.向git log 提供你要查看的commit的SHA,以git log -p fdf5493为例。

          

     2.使用新的git show 命令,同样以git show fdf5493为例

          

 4.git add& git commit&git diff

       添加新文件,并使用get status检查状态。

进入到new-git-project,首先,创建一个叫做 index.html 的文件,添加老师给出的代码,建立 js 和css 文件夹,并在文件下分别建立 app.js 和 app.css 文件,文件内容可为空

         

 然后运行git status命令

        

 可看出,尽管尚未对 git 执行任何特殊操作,但是它已经在观察这个目录(因为它是 git 项目),并且知道我们创建了几个新的文件.

         (1)git add

暂存文件,使用 git add 将 index.html 添加到暂存区,执行成功后,使用git status查看项目的状态。

              

 终端显示 index.html 现在位于"Changes to be committed"(暂存)分类下。

暂存剩余的文件,

可以运行以下命令:

$ git add css/app.css js/app.js

或者使用 git add .   ( 句点指代当前目录,可以用来表示所有文件和目录(包括所有嵌套文件和目录!))。

               

      (2)git commit

                  1)使用 git commit 命令,运行这条命令会打开之前配置好的编译器。编译器打开后在首行输入Initaial commit ,文本 "Initial commit" 并不特殊,只是第一个 commit 的常用消息。

               

 然后保存文件并关闭编译器窗口,回到终端可以看到以下界面:

                

 此时已经完成了第一个commit的提交!

                   2)如果你要编写的提交说明很简短,不想等打开代码编辑器后再输入信息,可以直接在命令行中使用 -m 选项传入信息:

                

                   3)第二个commit-添加更改

将以下内容添加到 index.html 中的 body 标记中:

<header>

   <h1>Expedition</h1>

</header>

 运行git status

                      

 终端显示了 git status 命令的结果。它显示了"Changes not staged for commit"部分,其中包含修改后的"index.html"文件

接下来使用git add命令将文件移到暂存区,并使用git status验证文件是否存在于暂存区,然后使用git commit命令提交commit,并添加提交说明add header to blog.

                      

              (3) get diff

  此工具可以在进行提交之前告诉我们已对文件进行了什么样的更改,git diff 命令可以用来查看已被加入但是尚未提交的更改。在 index.html 中,我们重新组织标题的措辞。将标题从"Expedition"改为"Adventure"。保存文件,然后在终端上运行 git diff

                        

 可以看到此结果和运行 git log -p 的结果一样。

                 (4)git ignore

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

                          

                          

 如果你想将某个文件保留在项目的目录结构中,但是确保它不会意外地提交到项目中,可以使用名称特殊的文件 .gitignore,将此文件添加到 new-git-project项目根目录。你只需列出希望 git ignore(忽略,不跟踪)的文件名,git 将忽略这些文件。

                         

 5.标签,分支

              (1)git tag 标签

进入前面建立的 new-git-project 项目文件夹中看该项目到目前为止的 git log 输出结果。

                         

 使用 git tag 命令与仓库的标签进行交互,输入以下命令: git tag -a v1.0,此命令会打开编译器,输入输入"Ready for content"作为tag,保存并退出编译器,接下来输入 git tag,命令行会显示仓库中的所有标签。然后通过调用git log 来了解标签处于仓库的那个位置。

                        

                         

 标签与 commit 相绑定。因此,该标签与 commit 的 SHA 位于同一行

              (2)删除标签

通过输入 -d 选项 (表示 delete 删除!)加上标签名称来删除 git 标签:

$ git tag -d v1.0

                        

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

先查询历史SHA git log --oneline,查找已经commit  的SHA,将要添加的commit的SHA提供出来即可

                      

              (4)git branch分支

git branch 命令用来与 git 的分支进行交互,如果我们只输入 git branch,则 git 将列出仓库中的分支:

                      

                      1)创建分支

使用 git branch 并提供要创建的分支对应的名称。例如创建一个叫做"sidebar"的分支:

                      

                      2)切换分支

使用 git 的 checkout 命令切换分支,然后使用git log --oneline来显示分支

                      

 现在提交的任何 commit 将添加到 sidebar 分支。

                     3)活跃分支

判断活跃分支的最快速方式是查看 git branch 命令的输出结果。活跃分支名称旁边会显示一个星号:

                      

                    4)删除分支

可以使用 -d 选项,告诉 git 删掉给出的分支(这里是"sidebar"分支),需要注意的是,git无法删除当前所在的分支,因此我们首先要切换到master分支上,再对sidebar分支进行删除。

                     

                    5)高效分支

在 new-git-project 项目中进行操作,该项目中具有index.html,css/app.css(空文件),js/app.js(空文件),Index文件可以下载学习通内老师给出的文件,然后将所有文件暂存并提交到仓库,切换到master分支,运行git status, 确认出现  working tree clean 或 working directory clearn 。

                     

                   6)分支实战

       更改 1 - 添加页面颜色

将以下内容添加到css/app.css文件中:

    body{

      background-color:#00cae4;

    }

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

                     

       更改 2 - 添加侧栏

通过git log --oneline 找到指定的commit,然后向该commit添加sidebar分支:

                    

                    

使用 git checkout 命令切换到新的 sidebar 分支。运行 git log --oneline --decorate,然后再运行get status命令,显示以下结果:

                    

                    

此时再运行git log --oneline发现在master分支提交的”Set background color for page “ commit 已经没有了。同时app.css里面的文件也为空

                   

通过向 HTML 文件添加以下 <aside> 代码,该代码将为页面添加一个侧栏:

                  

          更改3-更改master上的标题

使用git check out切换到master分支上,将index.html的<h1>标题从“Expedition”更改为“Adventure”

            

保存index.html文件并将其更改添加到仓库中,commit 消息"Improve site heading for SEO",提交后用git log --oneline 检查。

                   

           7)同时查看所有分支

--graph 选项将条目和行添加到输出的最左侧。显示了实际的分支。--all 选项会显示仓库中的所有分支,运行此命令将显示仓库中的所有分支和commit

                  

6.合并分支

将分支组合到一起称为合并(merge)

          (1)合并指令

Git merge 指令用来合并git分支,要合并sidebar分支,确保位于master分支上,因为和并的是两个不一样的分支,因此将提交commit,提交commit消息时,通常采用默认的commit消息。

                  

         (2)合并冲突

合并失败时称为合并冲突

人为制造一个合并冲突:

在master分支上更改标题,将<h1>标题改为“Quest”,做出更改后,保存文件并commit到仓库

                  

使用git log 获取上一个commit的SHA,这里选择5fdb5e,在该 commit 上创建一个heading-update分支,执行git log --oneline --graph --all查看输出

      

        

切换到heading-upate分支再次更新标题,确保更改在 master 分支上做出更改的同一行。将"Adventure"改为"Crusade"。然后保存文件,并将文件 commit 到仓库。

       

现在切换到master分支上执行合并:

      

可以看到此时出现合并冲突,可以使用git status命令显示详细信息。可以在代码编译器中查看index.html文件

      

     (3)解决合并冲突

删除所有带指示符的行,将标题改为“Adventurous Quest”,直接保存文件,将其添加到暂存区然后commit,最后使用 git diff 检查哪些内容将暂存并 commit。

       

7.撤销更改

     (1)更改最后一个commit

使用git commit --amend更改最近的commit,此时仓库中没有任何未commit的更改,所以可以修改消息,在其后面添加111.

      

     (2)向commit中添加忘记的文件

修改index.html文件,将其标题改为AD,保存文件,暂存文件,运行git commit --amend。

          

     (3)git revert 命令

git revert命令用于还原之前创建的commit

                 

                   (4)git reset命令

用来重置(清除)commit,使用--hard清除commit,--soft将commit的更改移至暂存区,--mixed取消暂存已被commit的修改

               

实验问题与解决:

1.目录从course-git-blog-project转为new-git-project后 不显示master分支。

      执行 git init命令后master就出现了,但是我在new-git-project目录例已经执行过一边git init 了。

2.做更换master上标题的时候,没有将sidebar分支转化为master分支,就直接修改改了index.html的内容,导致后来要转换分支时,无法转换

     将已经修改好的index文件再修改为原文件,然后就可以切换分支了

实验总结与体会:

       在这次实验时白白浪费了很多时间,因为一开始在老家没有电脑,所以用手机做不太方便,后来回家之后才又换成电脑做的,然后试验时一定要细心耐心,不然可能会因为某一个小错误就要从头开始再做一遍,浪费时间。通过这次实验,我了解了git一些相关代码的应用,受益匪浅。

思考题:(以下内容根据各自实验情况填写)

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

分布式版本控制系统的核心机理

原文地址:https://www.cnblogs.com/real2/p/12434036.html