Git合并已经push的commit

本文介绍如何使用Git将多个相关的提交合并为一个提交的过程。通过示例演示了如何使用`git rebase -i`命令来整理并合并提交,包括具体步骤和命令说明。

场景:我commit了afile,然后commit bfile,并且push到远程仓库了,其实它们属于同一个feature,这时想合并它们。

$ echo "abcd" >> afile.txt

$ git add afile.txt

$ git commit -m "add afile"

$ git push

$ echo "abcd" >> bfile.txt

$ git add bfile.txt

$ git commit -m "add bfile"

$ git push

git rebase前两个commit

$ git rebase -i HEAD~2

然后会打开一个文件,键盘按i键进入编辑模式 

pick要保留的commit和squash选择这个commi。这里我们pick afile的commit,squash bfile的commit

键盘按Esc

键盘按:wq回车保存退出

这时会跳转到commit message编辑界面

键盘按i键进入编辑模式,删除squash的那条commit message, 修改pick的那条commit message,键盘按Esc,然后按:wq,回车

这时git log可以看到commit被合并了。

bin9w@LAPTOP-ODF35RAF MINGW64 /d/sandbox/code/test-git (main)
$ git log
commit 21d3ab5a1cd37cc1c14f5c6c463b1c58bedd4492 (HEAD -> main)
Author: bin9wei <bin9wei@foxmail.com>
Date:   Fri Dec 9 15:41:46 2022 +0800

    add afile and bfile

commit f596f8ad426416b6ae55cb07db2e11d123da33cd
Author: bin9wei <bin9wei@foxmail.com>
Date:   Fri Dec 9 15:39:24 2022 +0800

    first commit

bin9w@LAPTOP-ODF35RAF MINGW64 /d/sandbox/code/test-git (main)
$ git push -f
Enumerating objects: 4, done.
Counting objects: 100% (4/4), done.
Delta compression using up to 8 threads
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 288 bytes | 288.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
To github.com:bin9wei/test-git.git
 + 0fe5528...21d3ab5 main -> main (forced update)

git push -f 强推到远程仓库,这时在github可以看到add afile和add bfile的commit已经合并! 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值