提交了一个功能的代码,竟然被开发嫌弃提交太多commit了。所以,我需要将多个commit rebase为一个commit进行提交:
1,git log查看最近的几个提交
2,使用rebase命令,进行提交整合
git rebase -i HEAD~4
(4代表压缩最近4次提交),进入commit选择界面
3,丢弃commit message,将4个commit整合为一个大commit。
对于commit:"add file2 content" 6e290ff ,commit:"add file3 content" 202ca73,commit:"add file4 content" 1306a43 这3个commit,选择 fixup(即commit message丢弃保留代码改动)所以我的commit改动内容应该是:
注意:对于对顶部的commit (本例子中选取的4个commit的第一个“add file1 content” 39ec80f 需要作为基础兜底commit,只能是pick选项)
5,以上内容编辑好后,使用vi保存命令退出
esc然后输入:wq!
出现提示:Successfully rebased and updated refs/heads/dev_xxy 表示rebase成功
6,git log查看rebase后的结果:
$ git log
commit 0e535fc8fa945884da6d0669e62ed0b9854eded80 (HEAD -> dev_xxy)
Author: xxx<xxx>
Date: Tue Sep 3 21:18:00 2024 +0800add file1 content
commit 6a2f9ca83ce3ff8404e532e938c496c2754sdsd45
Author:xxx<xxx>
Date: Tue Sep 3 16:32:05 2024 +0800add file1
commit 57f5191ee9e841158545fd9286412324sdsdsbdce6 (origin/main, origin/HEAD, main)
Author: xxx<xxx>
Date: Tue Sep 3 16:27:52 2024 +0800Initial commit
即 "add file1 content" "add file2 content" "add file3 content" "add file4 content"都合到 "add file1 content"
在实际中,我们可以将第一个commit起一个比较能概括功能的名字。
7,如果我们每次commit都被push到远程仓库中,
rebase后的提交要想同步到远程,必须使用如下命令。提交后整合的commit会被去掉。
$ git push origin dev_xxy --force