问下大家如何将多个commit合并成一个commit? | laravel | laravel china 社区-江南app体育官方入口
就是我有一个功能,老是搞错了,一个地方反反复复提交了好几次,然后我想把这一个功能就提交一次,相当于需要将多次提交变成一次的?
然后我搜了下,git rebase -i bb5b7599016 ,
然后他将分支变成了其他的了,* (no branch, rebasing shwl-20230407),不知道为什么?
就是我有一个功能,老是搞错了,一个地方反反复复提交了好几次,然后我想把这一个功能就提交一次,相当于需要将多次提交变成一次的?
然后我搜了下,git rebase -i bb5b7599016 ,
然后他将分支变成了其他的了,* (no branch, rebasing shwl-20230407),不知道为什么?
git commit --amend --no-edit
如果推到远端了, 就别合并了, 如果本地的话, 可以用 git rebase -i head~2 这种方式合并, 进去选p和s
如果你使用 phpstorm,可以在 vcs 窗口里面按住 ctrl 然后用鼠标左键选中多个 commit 记录,右键选择
squash commits...
可以很方便的处理。如果你的代码已经被推送到远端,那不建议你这样做。
git rebase -i 然后git push -f 强推
您可以使用
git rebase -i
改写历史记录,使多个提交合并成一个提交。在这种情况下,您可以使用以下步骤:首先,使用
git log
命令列出提交历史记录,并找到需要合并的提交。然后,使用
git rebase -i
命令打开交互式改写历史记录的编辑器。在这里,
是您想要修改的提交的父提交的哈希值。在您的情况下,似乎您已经在用这个命令了,所以现在处于交互式编辑器中。在编辑器中,将需要合并的提交行的单词
pick
改为squash
或fixup
。使用squash
将此提交合并到前一个提交中,并使用提交消息进行合并。使用fixup
合并提交,但忽略提交消息。如果需要更改提交消息,请使用reword
命令。保存并关闭编辑器。git 将会重写历史记录。
如果存在冲突,请按照提示解决冲突,然后继续重建基础分支。完成后,您将获得一个新的合并提交。
关于您遇到的问题,“(no branch, rebasing shwl-20230407)” 表示您正在重新设置基础分支。您可以继续解决任何冲突并完成这个命令。 :joy: