git 基础

作者: 踏莎行 | 来源:发表于2021-07-22 12:04 被阅读0次

    下载:https://git-scm.com/downloads

    git是什么?

    git是一种分布式的版本管理系统,Linux的创造者写的。git的作用就是对文件进行版本管理,方便在不同版本进行切换修改,类似文件分不同时间备份让后需要时找回其中一份代替,不过更方便使用

    git还可以与一些远程代码托管仓库搭配使用,比如github,gitee,使用git将你的项目托管到远程仓库,就相当于是将程序存放到了一个网盘上。

    git还可以实现多人协作开发

    基本使用

    将目录切换到你要创建仓库的文件下,右键,就会看到一个git bash here,点击打开


    Snipaste_2021-07-22_11-23-14.png
    • 初次使用git
    git config --global user.name "用户名"
    git config --global user.email 邮箱
    
    • 仓库初始化
    git init
    // 初始化成功后,会在文件夹中生成一个.git的文件,该文件默认是隐藏
    
    • 将修改添加至暂存区
      创建文件,添加内容之后
    // 将一个文件中的修改提交到暂存区
    git add 文件名
    
    // 将所有文件中的修改提交到暂存区
    git add .
    
    • 提交到本地
    git commit -m "提交信息"
    

    如果直接执行git commit命令,git会弹出一个vim的编辑窗口


    Snipaste_2021-06-25_17-37-29.png

    也就说提交信息是一定要有的,否则提交失败。vim编辑窗口的使用方法就是,先按“i”/“a”/“o”三个其中的一个,进入编辑环境,输入完成你的提交信息之后,按“Esc”键退出编辑环境,在输入“:w”回车以确认输入,再输入“:q”回车,退出vim编辑窗口,输入的命令必须都是英文的,否则失效

    • 查看提交的历史记录
    git log
    

    .git目录分析

    有“\”代表是文件夹

    hooks\
    info\
    logs\
    objects\
    refs\
    COMMIT_EDITMSG
    config
    description
    HEAD
    index

    • hooks
      文件包含客户端或者服务端的脚本钩子,在特定情况下执行。打个比方,就相当于是js的事件,执行对应的事件从而执行对应的事件函数
    • info 信息文件夹
      里面就一个exclude文件,包含全局性排除排除文件,通常会在项目的根目录下创建一个.gitignore文件配置忽略文件名称。
      比如说我们在项目完成之后进行打包,生成dist文件夹,不希望git去跟踪它里面的文件变化,就可以在.gitignore文件中写一个dist,这样git就不会跟踪了。忽略文件要写后缀名
    // .gitignore
    dist
    index.css
    
    • logs 记录文件夹

      • 里面有一个HEAD文件,里面记录了我们的提交历史
      • refs文件夹中主要记录的是分支的一些提交信息,在开发中,可能会存在多个分支
    • objects是整个文件夹的仓库目录
      我们文件内容的修改,被追踪文件的状态等,都在该文件夹中

    • refs分支信息

    • COMMIT_EDITMSG 记录了我们最后一次提交的文字说明

    • config 当前文件的配置信息

    • description描述

    • HEAD 当前分支的路径

      ref: refs/heads/master
      

      默认是在master主分支上

    • index 暂存区文件
      将修改的内容提交到暂存区实际上就是提交到index文件中,二进制文件,无法查看

    版本库的三个区

    初始化版本库:git init,这样就生成了一个仓库,每一个仓库都有三个区域:工作区(代码编辑区),暂存区(修改待提交区),仓库区(代码保存区)

    • 工作区实际上就是项目文件夹中的文件
    • 暂存区:就是在上面讲到.git文件夹中的index文件
      查看暂存区中有哪些文件:git ls-files
    • 仓库区:就是.git文件夹中的objects文件夹

    这之间的顺序就是要先在工作区编辑好内容,然后才能提交到暂存区,最后再commit存档到仓库区

    查看版本库的状态

    git status
    
    • 执行命令之后,若返回的结果是" nothing to commit, working tree clean ",表明工作区现在没有修改,工作区是干净的
    • 假如新增一个index.html文件,再查看一下版本库状态,返回的结果就是当前仓库中还没有被跟踪的文件,提示你使用git add 文件名命令,将未跟踪的文件添加到暂存区
    Untracked files:
      (use "git add <file>..." to include in what will be committed)
            index.html
    

    然后提交到暂存区,git add index.html
    再查看一下版本库的状态git status

    // 还没有提交
    No commits yet
    
    // 下面修改将会提交
    Changes to be committed:
      (use "git rm --cached <file>..." to unstage)
            new file:   index.html
    

    使用git commit -m "test " 提交到仓库区,再查看仓库状态,就反馈到了工作区是干净的,此时对index.html随便添加一点东西,再查看一下仓库状态

    // 没有提交到暂存区的更改
    Changes not staged for commit:
      // 添加到暂存区
      (use "git add <file>..." to update what will be committed)
      // 放弃修改
      (use "git restore <file>..." to discard changes in working directory)
            modified:   index.html
    

    这里就出现了一个放弃修改的命令,就是将程序还原到上一次提交的时候

    // 放弃某一个的修改
    git restore 文件名
    // 放弃此次所有的修改
    git restore .
    
    • 删除文件
      在项目目录下,创建一个index.html文件,输入内容,并git add index.html,和git commit -m "test"之后,查看一下文件列表git ls-files,打印结果肯定是只有一个index.html文件,现在我们在编辑器中删除这个index.html文件,然后再git ls-files,你会发现index.html依然存在,也就是你在编辑器里面删了,但是暂存区还没有删掉,此时查看版本库的状态
    // 查看版本库的状态
    $ git status
    On branch master
    Changes not staged for commit:
      /**
       * 使用git add 文件名
       * 或者使用
       * git rm 文件名
       * 可以将文件名添加到暂存区
       */
      (use "git add/rm <file>..." to update what will be committed)
      // 这里的git restore <file>就可以理解为是还原文件,撤销对文件的删除,恢复文件
      (use "git restore <file>..." to discard changes in working directory)
            deleted:    index.html
    
    no changes added to commit (use "git add" and/or "git commit -a")
    
    • 总结
      因为代码块的原因,上面无法正常显示出git给我们反馈的颜色,这里做一个总结
      执行git status命令之后
    git反馈颜色 传达的意思
    红色 说明此修改只存在于工作区
    绿色 说明此修改只存在于工作区和缓存区

    查看差异

    • git diff 命令,查看工作区和暂存区的差异,显示工作区较暂存区做了哪些修改,但是不会显示文件的增删
      新建一个仓库
    git init
    

    创建一个文件1.txt,随便输入123,添加暂存区,提交

    git add 1.txt
    git commit -m "test"
    

    然后在1.txt文件中添加一些内容:哈哈哈哈哈哈哈哈哈
    此时工作区做了修改,但是没有提交暂存区,git diff查看工作区和暂存区的差异

    git diff
    

    git的反馈信息就是

    diff --git a/1.txt b/1.txt
    index d800886..da194ec 100644
    --- a/1.txt
    +++ b/1.txt
    @@ -1 +1,2 @@
    -123
    \ No newline at end of file
    +123
    +哈哈哈哈哈哈哈哈哈
    \ No newline at end of file
    

    下一节

    相关文章

      网友评论

        本文标题:git 基础

        本文链接:https://www.haomeiwen.com/subject/ttuoyltx.html