git 合并多次commit

本文介绍了如何使用Git合并多次commit,并管理暂存区。通过`git stash`保存本地修改,确保工作区干净,然后使用`git rebase -i`合并commit。在交互式rebase中,将非最后一次提交的命令改为`squash`,合并后的commit信息可进行编辑。如果需要撤销rebase操作,使用`git rebase --abort`。此外,还讲解了如何取消`git merge`操作,未添加时使用`git merge --abort`,已添加则用`git reset --hard`。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这个操作执行以下三步:

1.将你修改的本地仓库的内容,取出来放到暂存区(stash)(保证工作区的干净)

2.本地合并多次提交的commit,由于工作区干净,所以不会有冲突

3.从暂存区把你之前提交的内容取出来

所以rebase在拉代码前要保证你的本地工作区是干净的,如果你本地修改的内容没完全commit 或者stash,就会rebase失败。


整个工作流程执行以下命令:

git stash  将本地修改文件保存到暂存工作区

git rebase  合并多次commit

git push -f  推送到远程分支。


----------- git stash ---------------
把修改的本地仓库的内容,取出来放到暂存区 或弹出

git stash   暂存区(stash)

git stash pop  弹出暂存区(stash)文件

git stash list 查看暂存区(stash)列表

---------- git rebase -----------

git log --oneline 

git 合并多次commit -i 的参数是不需要合并的 commit 的 hash 值,这里指的是第一条 commit, 接着我们就进入到 vi 的编辑模式
git rebase -i hash_value  hash_value是不需要合并的 commit 的 hash 值。

可以看到其中分为两个部分,上方未注释的部分是填写要执行的指令,而下方注释的部分则是指令的提示说明。指令部分中由前方的命令名称、commit hash 和 commit message 组成。
当前我们只要知道 pick 和 squash 这两个命令即可。

pick 的意思是要会执行这个 commit
squash 的意思是这个 commit 会被合并到前一个commit
我们将 除最后一次提交的这个 commit 前方的命令改成 squash 或 s,然后输入:wq以保存并退出
这时我们会看到 commit message 的编辑界面
其中, 非注释部分就是两次的 commit message, 你要做的就是将这两个修改成新的 commit message。
输入:wq保存并推出, 再次输入git log查看 commit 历史信息,你会发现这两个 commit 已经合并了。


如果这个过程中有操作错误,可以使用 git rebase --abort来撤销修改,回到没有开始操作合并之前的状态

--------- git merge ---------

git 取消merge

当我们使用git merge 操作合并代码但还没有add时,想取消这次合并,使用 git merge --abort 命令

假如已经add ,使用git reset 命令取消

git log --oneline 
git reset --hard commit_id
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

仰望星空@脚踏实地

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值