美文网首页
git rebase -i修改本地提交

git rebase -i修改本地提交

作者: 绝尘kinoko | 来源:发表于2022-12-01 16:21 被阅读0次

原本目的是修改提交的commit信息,顺便把其他可能会用到的总结学习了。
git rebase -i后接commit ID或者HEAD~n。commit ID表示从该提交往后算,不包括该提交;HEAD~n表示最近n次。
执行rebase命令后,会弹出一个rebase todo文本,里面包含了选择的提交记录和帮助信息。

rebase todo
正文信息为command commitID commitMessage,其中command在下面有列出来,可以使用首字母简写,后面会挑几个可能会用到的讲下;commitID不动;message可以改,但不在这里改。

command

  • pick
    默认命令,选择当前commit,不做更改
  • reword
    只改commit信息,改后会依次打开对应commit的文本记录用以修改。
    如果是本地未提交,也可以在vscode左下角进行撤销,看output是用的reset


    undo commit
  • edit
    可以插入文件修改,完成后commit会插入一条记录在当前commit记录后。
    如果是想合并到当前commit,可以使用git commit --amend -m 'new message'合并为一条新的提交信息。
  • squash
    合并请求,使用后一次的提交信息作为结果信息。
    最新的提交不能用squash,会被识别为错误命令,保存退出后会提示用git rebase --edit-todo来纠正。
    纠正完成(以及上面的edit操作)完成后,需要用git rebase --continue完成rebase,git bash在路径右边括号里能比较清楚看到rebasing状态,vscode则是在git -- commits处查看。

vi

上述过程中打开的文本都是命令行中的,顺便复习一下vi操作命令。

默认进入指令模式

移动光标
一般方向键够用
快捷且方便记忆的有

  • Ctrl + u (up)向上翻半页
  • Ctrl + d (down)向下翻半页
  • Shift + h (head)当前屏顶行
  • Shift + m (middle)当前屏中部
  • Shift + l (last)当前屏末行
  • Shift + g (寄?)文本末行
  • 0 当前行首
  • $ 当前行尾

只是用来处理git的话这些基本够用了,还有一些操作内容的:

  • yy 复制当前行
  • nyy 复制当前起的n行
  • q 粘贴
  • dd 剪切当前行
  • u 撤销
  • Ctrl + r 恢复撤销
如果是行内修改就需要进入到编辑模式
  • i:在光标前
  • I:在当前行首
  • a:光标后
  • A:在当前行尾
  • o:在当前行之下新开一行
  • O:在当前行之上新开一行

一般i就行了,剩下就是编辑内容。

编辑完成后退出编辑模式 ESC 进入指令行模式
  • :q 表示退出
  • :q! 表示强制退出
  • :wq 表示保存并退出
  • :w 表示保存不退出
  • :x 同wq
  • :e 文件名 打开并编辑指定名称的文件

一般:wq退出即可。

参考
https://blog.csdn.net/the_power/article/details/104651772/
https://blog.csdn.net/D_huili/article/details/126663824

相关文章

网友评论

      本文标题:git rebase -i修改本地提交

      本文链接:https://www.haomeiwen.com/subject/njwefdtx.html