如何维持整洁的 Git 提交记录?送你三个锦囊!

假设我们有这样一段 log 信息

* 98a75af (HEAD -> feature/JIRA123-amend-test) feat: [JIRA123] add feature 1.2

* 119f86e feat: [JIRA123] add feature 1.1

* 5dd0ad3 feat: [JIRA123] add feature 1

* c69f53d (origin/main, origin/feature/JIRA123-amend-test, origin/HEAD, main) Initial commit

假设我们要修改最后一个 log message,就可以使用下面命令:

git commit --amend -m “feat: [JIRA123] add feature 1.2 and 1.3”

我们再来看一下 log 信息, 可以发现,我们用新的 commit-id 5e354d1 替换了旧的 commit-id 98a75af, 修改了 message,并没有增加节点

* 5e354d1 (HEAD -> feature/JIRA123-amend-test) feat: [JIRA123] add feature 1.2 and 1.3

* 119f86e feat: [JIRA123] add feature 1.1

* 5dd0ad3 feat: [JIRA123] add feature 1

* c69f53d (origin/main, origin/feature/JIRA123-amend-test, origin/HEAD, main) Initial commit

现在我们的 repo 中文件是这样的:

.

├── README.md

└── feat1.txt

0 directories, 2 files

假设我们提交 feature 1.3 的时候,忘记了一个配置文件 config.yaml, 不想修改 log,不想添加新的 commit-id,那下面的这个命令就非常好用了

echo “feature 1.3 config info” > config.yaml

git add .

git commit --amend --no-edit

git commit --amend --no-edit 就是灵魂所在了,来看一下当前的 repo 文件:

.

├── README.md

├── config.yaml

└── feat1.txt

0 directories, 3 files

再来看一下 git log

* 247572e (HEAD -> feature/JIRA123-amend-test) feat: [JIRA123] add feature 1.2 and 1.3

* 119f86e feat: [JIRA123] add feature 1.1

* 5dd0ad3 feat: [JIRA123] add feature 1

* c69f53d (origin/main, origin/feature/JIRA123-amend-test, origin/HEAD, main) Initial commit

知道这个技巧,就可以确保我们的每次提交都包含有效的信息了。一张图描述这个过程就是这个样子了:

9d135b27a64eef3730d06aa8ee50fcf4.png

有了 --no-edit 的 buff 加成,威力更大一些

善用 git rebase -i

可以看着,上面的 log 都是在开发 feature1,我们在把 feature 分支 merge 到 main 分支之前,还是应该继续合并 log commit 节点的,这就用到了

git rebase -i HEAD~n

其中 n 代表最后几个提交,上面我们针对 feature 1 有三个提交,所以就可以使用:

git rebase -i HEAD~3

运行后,会显示一个 vim 编辑器,内容如下:

1 pick 5dd0ad3 feat: [JIRA123] add feature 1

2 pick 119f86e feat: [JIRA123] add feature 1.1

3 pick 247572e feat: [JIRA123] add feature 1.2 and 1.3

4

5 # Rebase c69f53d…247572e onto c69f53d (3 commands)

6 #

7 # Commands:

8 # p, pick  = use commit

9 # r, reword  = use commit, but edit the commit message

10 # e, edit  = use commit, but stop for amending

11 # s, squash  = use commit, but meld into previous commit

12 # f, fixup  = like “squash”, but discard this commit’s log message

13 # x, exec  = run command (the rest of the line) using shell

14 # d, drop  = remove commit

15 # l, label 

16 # t, reset 

17 # m, merge [-C  | -c ] 

18 # .       create a merge commit using the original merge commit’s

19 # .       message (or the oneline, if no original merge commit was

20 # .       specified). Use -c  to reword the commit message.

21 #

22 # These lines can be re-ordered; they are executed from top to bottom.

23 #

24 # If you remove a line here THAT COMMIT WILL BE LOST.

25 #

26 #   However, if you remove everything, the rebase will be aborted.

27 #

28 #

29 # Note that empty commits are commented out

合并 commit-id 最常用的是 squash 和 fixup, 前者包含 commit message,后者不包含,这里使用 fixup, 然后 :wq 退出

1 pick 5dd0ad3 feat: [JIRA123] add feature 1

2 fixup 119f86e feat: [JIRA123] add feature 1.1

3 fixup 247572e feat: [JIRA123] add feature 1.2 and 1.3

我们再来看一下 log, 这就非常清晰了

* 41cd711 (HEAD -> feature/JIRA123-amend-test) feat: [JIRA123] add feature 1

* c69f53d (origin/main, origin/feature/JIRA123-amend-test, origin/HEAD, main) Initial commit

如果您正在学习Spring Cloud,推荐一个连载多年还在继续更新的免费教程:https://blog.didispace.com/spring-cloud-learning/

善用 rebase

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)

img

最后

手绘了下图所示的kafka知识大纲流程图(xmind文件不能上传,导出图片展现),但都可提供源文件给每位爱学习的朋友

image.png

《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!
a72faed303032d36.jpg" alt=“img” style=“zoom: 33%;” />

最后

手绘了下图所示的kafka知识大纲流程图(xmind文件不能上传,导出图片展现),但都可提供源文件给每位爱学习的朋友

[外链图片转存中…(img-oXlogT08-1713635651365)]

《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值