◆

Git rebase -i 合并多次提交的方法

2023-02-02 01:370

webstorm 使用 git rebase -i 的问题

当我在 webstorm 中执行 git rebase -i 53675e5b 时,它没有使用 vi 编辑器,而是使用 webstorm 自带的 command line 但是不知道为什么总会一闪而过,或者无法编辑。

在 webstorm 中的配置如下

git config core.editor "webstorm -w"

后续改用 mac 的编辑文本,命令如下

git config core.editor "open -W -n"

git rebase -i 有什么作用

当你运行 git rebase -i hash 时,你会进入一个编辑器会话,其中列出了所有正在被变基的提交,以及可以对其执行的操作的多个选项。你可以根据如下选项去操作每一个 commit

p, pick = use commit (使用这个commit)
r, reword = use commit, but edit the commit message(改变commit 的信息)
s, squash = use commit, but meld into previous commit(融入先前的commit)
f, fixup = like “squash”, but discard this commit’s log message(放弃此提交的日志消息)
d, drop = remove commit(移除commit)

如何合并成一条 commit 记录呢

当我们要合并两条记录时,将第二条记录的 pick 改为 s 即可
git rebase -i 交互界面,把第二条提交记录的 pick 改为 s
保存后出现如下界面
保存后进入提交信息编辑界面
这个界面需要我们处理提交信息的修改,如果只需要一个提交 message ,可把另一个 message 前面加上 # 号,也可以不做处理,直接保存,保存后再次查看两个记录就合并成一个记录了。
用 # 注释掉多余的 commit message,只保留一条
可能出现的问题,把第一条记录的 pick 改为了 s
误把第一条记录的 pick 改成 s 时的报错提示
注意不要合并先前提交的东西,也就是已经提交远程分支的纪录。
可使用其提示的命令 git rebase --edit-todo,重新修改 rebase 时提示的信息,保存后再执行 git rebase --continue 修改提交的 meseage 信息
也可以直接执行 git rebase --abort (会放弃合并,回到 rebase 操作之前的状态,之前的提交的不会丢弃),然后重新执行 git rebase -i

💬留言板0

还没有留言,来发表第一条吧~

PAGE LOAD / LIVEGit rebase -i 合并多次提交的方法加载中