Git学习-高级篇2

Git 上节回顾

上一节主要对git的一些特性进行了介绍,主要介绍了Git的分离特性,我们可以利用HEAD指向一个具体的提交记录;也可以利用HEAD改变分支指向的提交记录;还可以对提交进行撤消,介绍了两种方法,接下来,对所用到的命令进行简单的回顾。

git checkout c1;  //这个命令适用HEAD指向c1这个提交记录,c1表示的是哈希值
git checkout master^^;  //相对引用,这个相对于master当前的提交(一般是最后一次)往上两个(几个尖尖就是往上几个)
git checkout HEAD~4; //从当前HEAD往上四个,当前HEAD默认是当前分支目前指向的提交记录
git branch -f master HEAD~4;  /将master分支强制指向HEAD的第四级父提交
git reset HEAD~1; //假设master指向最后一次提交,该命令表示将分支master移动到上一次提交
git revert HEAD;  //假设master指向最后一次提交,该命令将会出现一个新的提交,这个提交撤销了上次提交的修改。

具体细节请看上节:Git-高级特性1

Git 本节内容

整理提交记录

到现在我们已经学习了Git的基础知识——提交、分支以及在提交树上移动,这些概念涵盖了Git90%的功能,接下来要讨论的话题时“整理提交记录”,现在我想把某个bugFix分支上的c2提交放到master当前分支的后面,把reference分支上的c7分支放到master刚才的提交后面,应该怎么操作呢?用下面的命令。

git cherry-pick c2 c7; //假设现在HEAD指向master分支的最后一次提交,则这个命令就能满足上述需求。

操作前图示:
在这里插入图片描述
执行命令:

git cherry-pick c3 c4 c7;  //将c3,c4,c7放到master(当前分支)的后面

操作后图示:
在这里插入图片描述

交互式rebase

想要熟练掌握提交记录在分支上的移动,只用前面的方法还不够,因为哈希值很长,输入很麻烦。我们可以用交互式rebase来对某一分支上的提交记录自由移动或删除。

git rebase -i HEAD~4; //表示将当前分支HEAD指向的前4级父节点提取出来,用手动对它们进行排序,看图示:

操作前:
在这里插入图片描述
执行命令:

git rebase -i HEAD~4;

将会出现交互界面(实际中可能是vim打开的文件),可对其进行拖拽:
在这里插入图片描述
拖拽顺序后执行:
在这里插入图片描述

标签

分支很容易被人移动,提交记录也容易被人修改,那么有没有什么可以永久指向某个提交记录的标识呢?比如软件发布新的大版本,或是修正了一些重大bug,或是增加了一些新特性,有没有什么可以比分支更好的指向这些提交的方法呢?

git tag v1 c1; //这里标识将提交c1标记为v1

在这里插入图片描述

检索与标签距离

由于标签在Git中起着锚点的作用,Git专门用了一个命令用来表示与你最近的锚点。

git describe master; //离master分支最新提交最近的一个标签
输出格式:v0_2_gc2 //v0表示离master最近的标签,2表示经过了几次提交,c2表示当前提交,根据下图理解

在这里插入图片描述
本节主要介绍了提交记录移动的方法和如何给提交记录打标签,后面将会进入到Git远程仓库操作中…

  • 24
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值