git 合并多个 commit

#参考文章:

https://segmentfault.com/a/1190000007748862

#参考视频:

https://www.bilibili.com/video/BV15h411f74h/?spm_id_from=333.337.search-card.all.click&vd_source=eeb7ae40bd78a24b0434b669a8496d07

1,背景

在项目中遇到了要把多个 commit 合并为一个 commit,简洁明了。此处实践一下。

2,过程

我们来模拟一下整个过程:

1
2
3
4
5
6
7
#git-merge-commit-demo
初始化
a
b
c
d
e

比如说我们用 abcde 来模拟 5 次分别的 commit,查看记录:

1
git log --oneline

image-20230227191831969

如果我们要合并 a,b,c,d,e,则我们需要找到 a 前面一个的序号,即初始化:e074190,然后我们执行最关键的一步操作,

1
git rebase -i e074190

然后我们会进入这样一个输入框:(下面的#全是注释,不用管)

image-20230227192317273

我们要使用其中的 s,把 bcde 的 pick 改成 s 即可,注意不要改 a 的

按 i 进入插入模式,更改之后 esc,:wq 保存

image-20230227192800118

我们将之前的都删掉,写上合并之后的新的即可,

image-20230227193048060

此时我们再看一下日志,就只剩下合并的了

image-20230227193156444

我们在远程同步一下,

image-20230227193303916

视图变为:

image-20230227193405101

3,注意点

在实际实践的时候,我们可能会碰到这样的问题:

image-20230227194937280

我们需要把文件先 stash 起来,

1
git stash

在合并之后,进行恢复:

1
git stash pop