Git从8到13 深入了解Git特性

上一章简单的介绍了一些常用的Git命令,这一章主要是深入了解一下Git的稍微高级的一些知识和指令。
  1. 首先我们先来通过查看Git目录里面的文件来深入了解一下Git版本控制的构造。
    git目录

    • 查看HEAD可以知道当前所在的分支。
      查看Git的头
    • 在config文件里面存储着Git里面的一些配置信息,不同的Git分支里面内容不同。
      查看config里面的信息
    • 在refs文件夹里面包含heads和tags。hears里面有不同的分支的名字;tags里面主要就是一些里程碑的内容,也就是通常所说的打的一个tag。
      refs里面的内容
      有两个分支分别是master和temp
      tag的标签
  2. objects文件夹里面存放的是Git里面核心的文件内容,主要是Git版本控制管理的三个对象,主要关系就是commit包含tree,tree里面包含blob。tree的话就是一个文件夹,blob就是文件的内容。 前面文件夹的名称加上文件里面的名称,通过命令行可以查看文件的类型和文件内容。
    git cat-file -t md5值 查看类型
    git cat-file -p md5值 查看内容
    git branch -av 查看分支
    git status 查看文件的状态
    objects里面内容
    commit对象
    tree的内容
    blob对象

  3. 暂存区,工作区,head所含文件之间差异比较

    git diff --cached #暂存区和head所含文件的差异比较
    git diff #工作区和暂存区比较差异 全部文件
    git diff -- readme.txt #工作区和暂存区比较差异 个别文件
    git diff HEAD HEAD~2 #比较不同的head
    git diff temp master #比较俩个分支的差异
    git diff temp master -- index.html #比较俩个分支同一文件的差异
    head与head之间的比较
    比较暂存区的内容
    比较俩个分支同一文件的差异
    比较两个分支的差异

  4. 分离头指针

    当我们直接Check出来某个commit的时候,这个HEAD头指针不属于现在全部的branch版本的话,就是分离头指针。我们在代码中做尝试性变更的时候会遇到这个场景,比如说只是想尝试性的写一些功能,但是又不想保存到控制版本里面的时候。所以我们在使用分离头指针的时候需要注意的是:commit提交一定要跟branch绑定在一起才会生效。

    git checkout c6693 #分离头指针
    git branch write 2f87f57 #保存分离头指针
    产生分离头指针
    分离头指针未保存
    保存分离头指针

    在暂存区有时候写完的代码不想要了,需要全部恢复到工作区的时候。

    git reset HEAD #把暂存区的全部内容恢复到工作区
    git reset HEAD 文件名 #把暂存区的部分内容恢复到工作区
    git reset --hard M5值 #恢复到指定的commit,取消最近的提交 这个操作有点危险哟。
    将暂存区恢复到工作区
    恢复到指定的commit

  5. commit的一些高级指令

    • 修改commit的内容

      git commit --amend #修改最新的commit
      git rebase -i c6693435 #修改以前的commit的到时候需要找到他的父亲然后修改

      修改最新的commit
      变更老的commit成功
      修改以前的commit,这里需要将3efc626前面的pick改成r

    • 把多个连续的commit合成一个commit
      git rebase -i c669343
      把连续的commit更改1
      更改连续的commit
      把连续的commit的更改2

    • 把不连续的commit合成一个commit ,套路和上面一样就不多介绍了。
      git rebase -i c669343

  6. 将Git仓库备份到本地

    说了这么多,没有远程仓储怎么行,下面就先让我们在本地初始化一个本地的Git仓库。

    Git常用的传输协议
    有哑协议 /path/to/repo.git
    智能协议 file:///path/to/repo.git
    http/https协议 http://git-server.com:port/path/to/repo.git https://git-server.com:port/path/to/repo.git
    ssh协议 user@git-server.com:path/to/repo.git 最常用
    哑协议传输进度是不可见的;智能协议传输可见 并且智能协议比哑协议传输速度快。
    git clone --bare 地址 名称xx.git
    git clone --bare /e/BLOG/git/learn_git/.git ya.git
    git clone --bare file:///e/BLOG/git/learn_git/.git zhineng.git
    git remote add zhineng file///e/BLOG/tank/zhineng.git #同步到远端
    git push zhineng
    创建仓库
    同步到远端
    同步到远端验证

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值