问下大家如何将多个commit合并成一个commit?

就是我有一个功能,老是搞错了,一个地方反反复复提交了好几次,然后我想把这一个功能就提交一次,相当于需要将多次提交变成一次的?

然后我搜了下,git rebase -i bb5b7599016 ,
然后他将分支变成了其他的了,* (no branch, rebasing shwl-20230407),不知道为什么?

《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 8

git commit --amend --no-edit

1年前 评论
alante

如果推到远端了, 就别合并了, 如果本地的话, 可以用 git rebase -i HEAD~2 这种方式合并, 进去选p和s

1年前 评论

如果你使用 PHPSTORM,可以在 VCS 窗口里面按住 Ctrl 然后用鼠标左键选中多个 commit 记录,右键选择 Squash Commits... 可以很方便的处理。

file


如果你的代码已经被推送到远端,那不建议你这样做。

1年前 评论

git rebase -i 然后git push -f 强推

1年前 评论
slowlyo

您可以使用 git rebase -i 改写历史记录,使多个提交合并成一个提交。在这种情况下,您可以使用以下步骤:

  1. 首先,使用 git log 命令列出提交历史记录,并找到需要合并的提交。

  2. 然后,使用 git rebase -i <commit> 命令打开交互式改写历史记录的编辑器。在这里,<commit> 是您想要修改的提交的父提交的哈希值。在您的情况下,似乎您已经在用这个命令了,所以现在处于交互式编辑器中。

  3. 在编辑器中,将需要合并的提交行的单词 pick 改为 squashfixup。使用 squash 将此提交合并到前一个提交中,并使用提交消息进行合并。使用 fixup 合并提交,但忽略提交消息。如果需要更改提交消息,请使用 reword 命令。

  4. 保存并关闭编辑器。Git 将会重写历史记录。

  5. 如果存在冲突,请按照提示解决冲突,然后继续重建基础分支。完成后,您将获得一个新的合并提交。

关于您遇到的问题,“(no branch, rebasing shwl-20230407)” 表示您正在重新设置基础分支。您可以继续解决任何冲突并完成这个命令。 :joy:

1年前 评论
slowlyo (作者) 1年前
DonnyLiu 1年前
道法自然 1年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!