git笔记之默认使用vim以及修改倒数第二次的commit提交信息到远程

code review!
文章目录
- git笔记之默认使用vim以及修改倒数第二次的commit提交信息到远程
-
- [一.默认使用vim方法之一:使用 `git config` 命令](#一.默认使用vim方法之一:使用
git config命令) - 二.修改倒数第二次的commit提交信息到远程
- [一.默认使用vim方法之一:使用 `git config` 命令](#一.默认使用vim方法之一:使用
一.默认使用vim方法之一:使用 git config 命令
这是最直接且专门针对 Git 的设置方法。打开的终端(Terminal)或 Git Bash,运行以下命令:
bash
git config --global core.editor "vim"
解释:
--global:表示这个设置对当前用户的所有 Git 仓库生效。如果只想对当前仓库生效,可以去掉这个参数(或者换成--local)。core.editor:这是 Git 中控制默认编辑器的配置项。"vim":指定使用 vim。如果想使用nvim(Neovim),也可以将其改为"nvim"。
二.修改倒数第二次的commit提交信息到远程
在操作之前,请务必注意:修改历史提交(Rebase)会改变提交的哈希值(Commit ID)。
如果这一分支是多人协作的分支(其他人已经拉取了的旧代码),强制推送到远程可能会导致队友的代码冲突或混乱。
- 如果是自己的私有分支: 可以放心操作。
- 如果是公共分支: 请先与队友沟通,或者考虑只追加一个新的修正提交而不是修改历史。
操作步骤
第一步:启动交互式变基 (Interactive Rebase)
我们需要对最近的 2 次提交进行变基操作。在终端中输入:
bash
git rebase -i HEAD~2
-i:表示交互模式(interactive)。HEAD~2:表示从当前位置往回数 2 个提交。
第二步:选择要修改的提交
执行上述命令后,Git 会自动打开默认的编辑器(比如 Vim)。会看到类似下面的内容:
text
pick 1a2b3c4 倒数第二次的提交信息 (这是想改的)
pick 5d6e7f8 最后一次的提交信息
...
需要做的是:
- 找到倒数第二次提交的那一行(通常是第一行,因为顺序是按时间正序排列的,旧的在上)。
- 将该行开头的单词
pick修改为reword(或者简写为r)。reword的意思是:保留代码修改,但允许编辑提交信息。
- 不要 修改第二行(最后一次提交),保持
pick不变。
修改后的样子:
text
reword 1a2b3c4 倒数第二次的提交信息
pick 5d6e7f8 最后一次的提交信息
保存并退出编辑器(在 Vim 中是 :wq)。
第三步:修改提交信息
退出后,Git 会立即再次打开编辑器。这次它是专门让编辑刚才标记为 reword 的那个提交的信息。
- 修改编辑器中的文字,改成想要的新提交信息。
- 保存并退出(
:wq)。
Git 会自动完成剩余的变基过程。如果成功,会看到 Successfully rebased and updated refs/heads/... 的提示。
第四步:强制推送到远程
因为修改了历史提交,本地的提交历史和远程仓库已经不一致了(分叉了)。需要使用强制推送来覆盖远程仓库。
bash
git push --force
# 或者更安全的写法(推荐):
git push --force-with-lease
--force-with-lease比单纯的--force更安全。它会检查远程分支在拉取之后是否有其他人推送过代码。如果有,它会阻止覆盖,防止意外删掉队友的代码。
总结流程图
git rebase -i HEAD~2- 将目标提交前的
pick改为reword-> 保存退出。 - 在弹出的新窗口中修改文字 -> 保存退出。
git push --force-with-lease
常见问题:如果在 Rebase 过程中遇到冲突怎么办?
虽然只是修改提交信息通常不会产生代码冲突,但如果真的发生了:
- Git 会暂停 Rebase 并提示冲突文件。
- 需要手动解决冲突文件。
- 解决后执行
git add <file>。 - 执行
git rebase --continue继续流程。- 注意: 此时不需要执行
git commit。
- 注意: 此时不需要执行