Git

Git


1 Git简介

1.1 git结构

Untitled

1.2 Git和代码托管中心

  代码托管中心:维护远程库
  • 局域网环境下
    • GitLab服务器
  • 外网环境下
    • GitHub
    • 码云

1.3 本地库和远程库的交互方式

  • 团队内

Untitled

  • 团队外

Untitled

2 Git命令行操作

2.1 本地库操作

2.1.1 本地库初始化

  • 命令:git init

  • 效果:

    Untitled

  • 注意:.git目录中存放的是本地库相关的子目录和文件,不要删除,也不要胡乱的修改。

2.1.2 设置签名

  • 形式

    用户名:tom

    Email:goodMorning@xx.com

  • 作用:区分不同开发人员的身份

  • 辨析:这里设置的签名和登录远程库的账号和密码没有任何关系

  • 命令:

    • 项目级别/仓库级别:尽在当前项目范围内有效;
      • git config user.name tom pro
      • git config user.email goodMorning_pro@xx.com
      • 保存的位置:.git/config
    • 系统用户级别:登录当前操作系统的用户范围;
      • git config —global user.name tom_glb
      • git config —gloabl user.email goodMorning_glb@xx.name
      • 保存的位置:~/.gitconfig
    • 优先级
      • 就近原则:项目级别有限于系统级别
      • 如果只有系统用户级别的签名,就以系统用户级别的签名为准
      • 二者都没有不允许

2.1.3 添加提交以及查看状态操作

  • 查看状态:git status

    Untitled

  • 添加操作:git add

    将工作区的”新建/修改”添加进缓存区

  • 提交操作:git commit -m “commit message”

    将暂存区的内容提交给本地库

2.1.4 版本穿梭测试

  • 查看历史记录
    • git log [—pretty==oneline, —oneline]
    • git reflog
      • HEAD@
  • 前进后退
    • 本质

      Untitled

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

      • git reset —hard <局部索引值>
    • 使用^符号:只能后退

      • git reset —hard HEAD^
    • 使用~符号:只能后退

      • git reset —hard HEAD~n

2.1.5 reset 三个参数对比

  • —soft

    • 仅仅在本地库移动HEAD指针

    Untitled

  • —mixed

    • 在本地库移动HEAD指针

    • 重置暂存区

      Untitled

  • —hard

    • 在本地库移动HEAD指针

    • 重置暂存器

    • 重置工作区

      Untitled

2.1.6 删除文件找回

  • 前提:删除前,文件存在时的状态提交到了本地库
  • 操作:git reset —hard [指针位置]
    • 删除操作已经提交到本地库:指针位置指向历史记录
    • 删除操作未提交到本地库:指针位置为HEAD

2.1.7 比较文件

  • git diff <文件名>
    • 将工作区的文件和暂存区进行比较
  • git diff <本地库中的历史版本> <w文件名>
    • 将工作区的文件和本地库历史记录比较
  • 不带文件名,比较多个文件

2.1.8 分支管理

  • 什么是分支

    在版本控制过程中,使用多条线同时推进多个任务

    Untitled

  • 分支的好处

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

    • 创建分支
      • git branch <分支名称>
    • 查看分支
      • git branch -v
    • 切换分支
      • git checkout <分支名称>
    • 合并分支
      • 切换到接受修改的分支上
      • git merge <指定分支名>
    • 解决冲突
      • 冲突的表现

        Untitled

      • 冲突解决

        • 编辑文件,删除特殊符号
        • 把文件修改到满意为止,保存退出
        • git add <文件名>
        • git commit -m “日志信息”,此时commit一定不能带具体文件名

2.2 远程库操作

  • 推送
    • git remote add <别名> 远程仓库地址
    • git push <别名> <分支名>
  • 克隆
    • git clone <远程地址>
    • 效果
      • 完成把远程库下载到本地
      • 创建远程地址别名
      • 初始化本地库
  • pull=featch+merge
    • git featch <远程地址别名> <远程分支名>
    • git merge <远程地址别名/远程分支名>
  • 解决冲突
    • 要点
      • 如果不是基于github远程库的最新版所做的修改,不能推送,必须先拉取
      • 拉取下来后如果冲突状态,则按照分支冲突解决操作即可
posted @ 2022-05-09 17:23  睿哥Dada  阅读(11)  评论(0编辑  收藏  举报