原本目的是修改提交的commit信息,顺便把其他可能会用到的总结学习了。
git rebase -i
后接commit ID或者HEAD~n。commit ID表示从该提交往后算,不包括该提交;HEAD~n表示最近n次。
执行rebase命令后,会弹出一个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
网友评论