.

├── 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

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

保持清洁的Git提交记录,三招就够了

有了 --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

善用 rebase

=========

上面的 feature1 已经完整地开发完了,main 分支也有了其他人的更新,再将 feature merge 回 main 分支之前,以防代码有冲突,需要先将 main 分支的内容合并到 feature 中,如果用 merge 命令,就会多处一个 merge 节点,log history 中也会出现拐点,并不是线性的,所以这里我们可以在 feature 分支上使用 rebase 命令

git pull origin main --rebase

保持清洁的Git提交记录,三招就够了

pull 命令的背后是自动帮我们做 merge 的,但是这里以 rebase 的形式,再来看一下 log

  • d40daa6 (HEAD -> feature/JIRA123-amend-test) feat: [JIRA123] add feature 1

  • 446f463 (origin/main, origin/HEAD) Create main.properties

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

我们的 feature1 功能 on top of main 的提交节点,还是保持线性,接下来就可以 push 代码,然后提 PR,将你的 feature merge 到 main 分支了

简单描述 merge 和 rebase 的区别就是这样的:

保持清洁的Git提交记录,三招就够了
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

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

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

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

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

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

img

总结

阿里伤透我心,疯狂复习刷题,终于喜提offer 哈哈~好啦,不闲扯了

image

1、JAVA面试核心知识整理(PDF):包含JVMJAVA集合JAVA多线程并发,JAVA基础,Spring原理微服务,Netty与RPC,网络,日志,ZookeeperKafkaRabbitMQ,Hbase,MongoDB,Cassandra,设计模式负载均衡数据库一致性哈希JAVA算法数据结构,加密算法,分布式缓存,Hadoop,Spark,Storm,YARN,机器学习,云计算共30个章节。

image

2、Redis学习笔记及学习思维脑图

image

3、数据面试必备20题+数据库性能优化的21个最佳实践

image
《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》点击传送门即可获取!
转存中…(img-yMbVnnkQ-1712321727792)]

2、Redis学习笔记及学习思维脑图

[外链图片转存中…(img-gQQPQ8V0-1712321727792)]

3、数据面试必备20题+数据库性能优化的21个最佳实践

[外链图片转存中…(img-FlMdBOBG-1712321727792)]
《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》点击传送门即可获取!

Logo

Kafka开源项目指南提供详尽教程,助开发者掌握其架构、配置和使用,实现高效数据流管理和实时处理。它高性能、可扩展,适合日志收集和实时数据处理,通过持久化保障数据安全,是企业大数据生态系统的核心。

更多推荐