文章参考: https://blog.csdn.net/qq_21744873/article/details/82629343
git rebase -i [commit_id]
commit_id 是 连续合并的多个分支的前一个commit的commit_id;
git status 后会看到,提示让你git pull一下,千万不要这样做!否则你会发现这三条白合并了,还平白多了两条commit
这时候,需要强制push上去 git push -f
最后需要将本地已经rebase好的一个commit推送到远程分支上去时,需要使用 git push -f (force 强制覆盖);
[CASE_0]: git rebase -i [commit_id] 将自commit_id之后的所有提交至当前最近提交合并成一个提交
[CASE_1]: git rebase -i [commit_id] 将自commit_id之后的提交至指定到某个commid_id(不是最近的提交)合并成一个提交
(0). 使用git log 查看该分支的commit记录;
xmly@AresMacBook test_git % git log
commit 23d29b9335433ccf33aab0bbc86edbc43a55a2d4 (HEAD -> ares, origin/ares)
Author: Ares <ares.ding@ximalaya.com>
Date: Thu Apr 2 11:22:18 2020 +0800
[modify]: list.h添加list数据结构体声明;
commit 9285c05cabac903f35a30c2edbc9fb39bcd04a52
Author: Ares <ares.ding@ximalaya.com>
Date: Thu Apr 2 11:15:54 2020 +0800
[modify]: 修改main.c文件
commit 76ae611639d34c2a089fe6ba39ac52276bba6834
Author: Ares <ares.ding@ximalaya.com>
Date: Thu Apr 2 11:14:22 2020 +0800
[modify]: 修改list.c文件;
commit d2797ac9740316f44876c5e52f55e6ad01f05b0e
Author: Ares <ares.ding@ximalaya.com>
Date: Thu Apr 2 11:13:33 2020 +0800
[modify]: 修改list.h文件;
commit e819cf35cffd2a0b8ddde3679acc7fbe9825468b
Author: Ares <ares.ding@ximalaya.com>
Date: Thu Apr 2 10:41:23 2020 +0800
This is a combination of 3 commits.
[addition]: add main.c file;
[addition]: add mytypedef.h file;
[addition]: add list.c/.h files;
commit 2dab1eb53d15372dd691fe767474bc808a68ad16 (origin/master, master)
Author: Ares <ares.ding@ximalaya.com>
Date: Thu Apr 2 10:38:11 2020 +0800
[addition]: add README.md file;
xmly@AresMacBook test_git %
(1). 比如说我们想要把自[e819cf35cffd2a0b8ddde3679acc7fbe9825468b]以后的提交从[d2797ac9740316f44876c5e52f55e6ad01f05b0e]到[76ae611639d34c2a089fe6ba39ac52276bba6834]这两个连续的提交(当然也可以是连续两个以上的commit)合并成一个commit, 保留后面的两个commit[9285c05cabac903f35a30c2edbc9fb39bcd04a52], [23d29b9335433ccf33aab0bbc86edbc43a55a2d4], 那么应该怎么操作呢?
还是使用 git rebase -i e819cf35cffd2a0b8ddde3679acc7fbe9825468b
(2). 再次使用git log 查看一下本地提交记录:
(3). 记得将本地分支修改push到远程分支 使用强覆盖; git push -f;