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查看状态,基本都会有提示。

为了将步骤详细还原,使用了大量截图,还是很耗费时间的。

写得不好、描述得不好的地方欢迎评论处指正,我尽量即使修改,谢谢~

猜你喜欢

转载自blog.csdn.net/not_say/article/details/82180129