git rebase -i 中edit和fixup的简单使用
一、edit的使用
1、当在某个分支上面存在多个commit,但是又必须在之前的commit进行修改的时候,可以使用edit来对旧的commit进行修改。
将改动分别提交为两个commit
两次commit的test文件分别是这样子的:
2、使用git log查看commit 历史日志信息
红色线标注的两个commit是刚刚提交的,蓝色线标注的是此分支依赖的分支的最近的一次commit(后面会用到)
3、使用git rebase -i 命令进入vim交互界面(这里的commit选择的是两次提交之前的一次commit,这样才能将两次提交显示出来)
此时可以看到两次提交的信息,上面一个是第一次的提交,下面一个是第二次的提交(pick:使用commit)
看下面的注释Commands部分,有对各种命令的介绍
4、将第一次提交前面的pick改为edit或者e,第二次的提交仍为pick,然后wq保存退出
此时下图可以看到正在进行rebase过程
此时test文件的状态是第一次提交时的状态
5、对文件进行修改
修改之后使用git add .或者git add -u命令将修改文件添加到暂存区
然后使用给git commit --amend命令,进入如下界面,默认使用之前提交的描述,也可以进行修改。然后wq保存并推出。
6、对第一个commit修改完成后,使用 git rebase --continue命令进行之后的修改。完成后会看到分支名称的变化,以及test文件内容的变化。
7、修改完冲突以后,使用git add -u。然后查看状态git status.会提示你进行continue命令,因为你对第一个commit的修改已经完成,一直到最新的提交的冲突也解决。所以整个操作其实已经结束。现在要进行rebase命令的结束操作。
运行git rebase --continue命令之后进入下面页面,无需修改,直接wq保存并推出即可。
8、对第一次commit的修改到此结束。
下图就是最后的test文件的内容,也是我们想要达到的效果。
二、fixup的使用
1、当我们一个分支上面有多个提交,且部分提交是为了弥补之前的提交所做的细微改动。这个时候可以使用fixup将这些细微的提交合并(被合并掉的提交的message将被删除),这样我们主分支的git log graph看起来就更加干净。
2、使用git log查看commit历史,此分支有两个commit,我们要将第二次的commit(3fcb)合并第一次commit里面。
3、与edit一样,先用git rebase -i 命令进入vim交互界面(使用两次commit之前的commit的uuid),然后将要合并的commit的pick改成f或者fixup,wq保存并退出。
4、此时可以看到合并已经完成的提示,然后查看log,就只剩下第一次的commit,但是test文件内容没有变化,因为第二次的commit内容已经合在第一次commit里面了。
三、总结
过程中可以多使用git status查看状态,基本都会有提示。
为了将步骤详细还原,使用了大量截图,还是很耗费时间的。
写得不好、描述得不好的地方欢迎评论处指正,我尽量即使修改,谢谢~