Git学习笔记

本文详细介绍了Git的优势,如本地操作、完整性保障和快速分支管理。深入解析了Git的结构,包括本地库与远程库的交互,以及一系列常用命令行操作,如设置签名、状态查看、提交、版本控制等。此外,还探讨了Git的基本原理,如哈希算法在保证数据完整性方面的作用。
摘要由CSDN通过智能技术生成

Git

1. git的优势

  1. 大部分操作在本地完成,不需要联网
  2. 完整性保证
  3. 尽可能添加数据而不是删除或修改数据
  4. 分支操作非常快捷方便(内部以快照管理,分支操作等于切换指针)
  5. 与Linux命令全面兼容

2. git的结构

3. 本地库与远程库的交互

  1. 团队内协作

在这里插入图片描述

  1. 跨团队协作
    在这里插入图片描述

4. Git命令行操作

  1. 设置签名:

    1. 形式

      1. 用户名:
      2. Email地址:
    2. 作用:区分不同开发人员的身份

    3. 辨析:这里设置的签名和登陆远程库(代码托管中心)的账号、密码没有任何关系。

    4. 命令:

      • 项目级别/仓库级别:仅在当前本地库范围内有效(需要在本地库使用命令)

        git config user.name xxx
        git config user.email xxx@xxx.com
        
        信息保存位置:./.git/config文件
        
      • 系统用户级别:登陆当前操作系统的用户级别

        git config --global user.name  xxx
        git config --global user.email  xxx@xxx.com
        
        信息保存位置:~/.gitconfig
        
      • 项目优先级:

        • 就近原则:项目级别优先于系统用户级别,二者都有时采用项目级别的签名
        • 如果只有系统用户级别的签名,就已系统级别的签名为准
        • 二者都没有不允许
  2. 状态查看操作:查看工作区,暂存区的状态

    git status
    
  3. 添加操作:将工作区的“新建/修改”添加到暂存区

    git add [file name]
    
  4. 提交操作:将暂存区的内容提交到本地库

    git commit -m "commit message" [file name]
    
  5. 版本的前进和后退:

    1. 查看历史记录

      git log :多屏显示控制方式:
      		——空格向下翻页
      		——b向上翻页
      		——q退出
      git log --pretty=oneline  每次操作只显示一行
      git log --oneline   哈希值只显示一部分
      git reflog	指针,会显示所有版本
      
    2. 前进后退

      • 基于索引值操作【推荐】

        git reset --hard 局部索引值
        
      • 使用^符号:只能往后退,一个一步

        git reset --hard HEAD^
        
      • 使用~符号:只能后退,后面跟什么数字,表示后退几步

        git reset --hard HEAD~3
        
      • reset命令的三个参数对比

        • –soft参数:
          • 仅仅在本地库移动HEAD指针
        • –mixed参数:
          • 在本地库移动HEAD指针
          • 重置暂存区
        • –hard参数
          • 在本地库移动HEAD指针
          • 重置暂存区
          • 重置工作区
    3. 删除文件并找回

      • 前提:删除前,文件存在时的状态提交到了本地库
      • 操作:get reset --hard 【指针位置】
        • 删除操作已经提交到了本地库:指针位置指向历史记录
        • 删除操作尚未提交到本地库:指针位置使用HEAD
    4. 比较文件:

      1. 将工作区文件跟暂存区比较

        git diff 文件名 
        
      2. 将工作区中的文件和本地库历史记录比较

        git diff 本地库中的历史版本 文件名
        
      3. 不带文件名则会比较多个文件

  6. 分支操作

    1. 分支的好处

      • 同时并行推进多个功能的开发,提高开发效率
      • 各个分支在开发过程中,如果某一个分支开发失败,不会对其他分支有任何影响。失败的分支删除重新开始即可。
    2. 分支操作

      1. 创建分支

        git branch 分支名
        
      2. 查看分支

        git branch -v
        
      3. 切换分支

        git checkout 分支名
        
      4. 合并分支

        1. 第一步:切换到接受修改的分支上(被合并,增加新内容)

          git checkout 被合并分支名
          
        2. 第二步:执行merge命令

          git merge 有新内容的分支 
          
        3. 冲突的解决

          1. 编辑文件,删除特殊符号
          2. 把文件修改到满意的程度,保存退出
          3. git add 文件名
          4. git commit -m “日志信息” (此时commit一定不能带具体文件名)
  7. 远程库操作

    1. 查看/添加当前远程地址别名

      git remote -v 
      git remote add 别名 远程地址
      
    2. 推送代码

      git push 别名 分支名
      
    3. 克隆代码

      • 完整地把远程库下载到本地

      • 创建origin远程地址别名

      • 初始化本地库

        git origin 远程地址
        
    4. 拉取代码:pull = fetch + merge

      git pull 远程地址别名/远程分支名
      git fetch 远程库地址别名 远程分支名  
      git merge 远程库地址别名/远程分支名
      
      
    5. 解决冲突

      • 要点
        • 如果不是基于GitHub远程库的最新版所做的修改,不能推送,必须先拉去
        • 拉去下来后如果进入冲突状态,则按照“分支冲突解决”操作即可

5. Git的基本原理

  1. 哈希:哈希是一个系列的加密算法,各种不同的哈希算法虽然加密强度不同,但是有以下几种共同点

    1. 不管输入数据的数据量有多大,输入同一个哈希算法,得到的加密结果长度固定

    2. 哈希算法确定,输入数据确定,输出数据能够保证不变

    3. 哈希算法确定,输入数据有变化,输出数据一定有变化,而且通常变化很大

    4. 哈希算法不可逆

      Git底层采用的是SHA-1算法。

      哈希算法可以被用来验证文件。原理如下图所示:

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NgShHvJU-1629604041107)(C:\Users\MitsuiYe\AppData\Roaming\Typora\typora-user-images\image-20210821162115584.png)]

      Git就是靠这种机制来从根本上保证数据完整性的。

  2. 版本管理机制

    1. 集中式版本控制:增量
    2. git版本控制:快照,创建和移动指针

  1. 哈希算法确定,输入数据有变化,输出数据一定有变化,而且通常变化很大

  2. 哈希算法不可逆

    Git底层采用的是SHA-1算法。

    哈希算法可以被用来验证文件。原理如下图所示:
    d [dou]

    Git就是靠这种机制来从根本上保证数据完整性的。

  3. 版本管理机制

    1. 集中式版本控制:增量
    2. git版本控制:快照,创建和移动指针
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值