[Git] 系列三随意修改提交记录以及一些技巧

[Git] 系列三随意修改提交记录以及一些技巧

Author: Xin Pan

Date: 2022.09.17



高级命令总结好了,大概总结好了。90%的常用功能满足了。但是学习要继续!!!

整理提交记录

git cherry-pick <提交号>,这个命令很简洁也很直观,把<提交号/哈希值>直接复制到了当前HEAD之后作为新的提交。

在这里插入图片描述

未知提交号哈希值时怎么办?

git已经想好了,使用交互式rebase即可。

git rebase -i <提交号>即可,网页这里做的不错。只可意会 不可言传哈哈哈(其实我水平不行)。建议读者去网站看看吧。

一些技巧

本地栈式提交

方法一

我正在解决某个特别棘手的 Bug,为了便于调试而在代码中添加了一些调试命令并向控制台打印了一些信息。最后就差把 bugFix 分支里的工作合并回 main 分支了。你可以选择通过 fast-forward 快速合并到 main 分支上,但这样的话 main 分支就会包含我这些调试语句了。你肯定不想这样,应该还有更好的方式……git rebase 或者git cherry-pick都可以。

其实很简单。只要rebase当前分支到之前提交的分支,然后让main fast-forward就可以了。也是通过rebase完成的。

git rebase -i <之前的某个提交>
git rebase HEAD main
# 现在main 和<之前的某个提交> 一样,而且是自己验证过有效的那个提交。
方法二

同样的用git cherry-pick也可以完成

git switch <之前的某个分支>
git cherry-pick <想要保留个分支>
# 同样的效果

Tag

它们可以(在某种程度上 —— 因为标签可以被删除后重新在另外一个位置创建同名的标签)永久地将某个特定的提交命名为里程碑,然后就可以像分支一样引用了。

更难得的是,它们并不会随着新的提交而移动。你也不能切换到某个标签上面进行修改提交,它就像是提交树上的一个锚点,标识了某个特定的位置。

git tag <tagName> <提交记录>
# 如 git tag v1 fe32(SHA-1为fe32这个提交),为SHA-1为fe32这个提交打上v1标记

Describe

有了tag那如何描述这个tag的意义呢?使用Describe就好啦。

由于标签在代码库中起着“锚点”的作用,Git 还为此专门设计了一个命令用来描述离你最近的锚点(也就是标签),它就是 git describe

在这里插入图片描述

之后教程提供了几个有意思的作业,叫做高级教程。还是挺有意思的,正好检验下自己的学习结果。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值