git -- 合并本地多次commit

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了git -- 合并本地多次commit相关的知识,希望对你有一定的参考价值。

参考技术A

我们在本地开发某一个模块的时候,可能会有多次commit的场景。
比如在A分支上开发东西,这个时候产品要在已上线版本加紧急需求,上线这个时候可能就得切到别的分支开发了。但是A分支开发的东西可能就需要先提交到本地。
完成紧急任务之后,又要切到A分支继续开发,开发完成后,就会出现多次commit了,但是这多次的commit其实是一个功能模块,如果一块Push到远端,提交记录可能会看的比较零碎。

1、

2、

1、git log 查看所有的git 记录

我们现在项合并的是 add 7 + add 6 + add 5

2、git rebase -i commitId
这里的commitId指的是想要合并的最后一条的下一条记录也就是
d5d40c7d0d983c4e5ca50e8222f31114bcaa1fe9<添加3 和 4>
按下q退出git log 查询
前提条件,本地没有可以提交的东西。不然会报错

我们这边需要将【add 7】和【add 6】合并到【add 5】中,那就需要修改成如下的:

修改完成后,按esc键,冒号,输入wq进行保存。之后会继续跳转到commit message 的编辑界面:
可以在这个地方修改commit的message,不修改,默认是这几次的commit message的集合。

4、验证

分布式版本控制系统Git-----7.Git 使用git rebase合并多次commit

将多次commit合并,只保留一次提交历史。

PS:在我练习的时候,将一个文件的代码做了多次修改,而且每次修改都给提交了,这几次改动的目的都一样,比如说修改RADEME.md,但是每次改动的只是一个小小的代码,但是提交历史上的显示看着会很乱,所以需要合并之前的多次提交历史。

1.首先使用git log查看一下提交历史【--oneline作用是将每个提交放在一行显示】

 

这样在git中看到的是4次提交(更改txt),有点冗余,需要做的是将4commit合并为一次

 

2. git 压缩  git rebase -i HEAD~5【这里也可以写为4,如果是4的话,下面修改参数的时候最上面那条也得修改】

 

该命令执行后,会弹出一个编辑窗口,5次提交的commit倒序排列,最上面的是最早的提交,最下面的是最近一次提交。

【未修改的编辑窗口我没截图,只截了修改了的图,图在下面】

 

修改第2-4行的第一个单词picksquash(也可以改为简写"s"),当然看一下里面的注释就理解含义了。

 

然后保存退出,git会压缩提交历史,如果有冲突,需要修改,修改的时候要注意,保留最新的历史,不然我们的修改就丢弃了。

 

【最上面那条记录的不能动(因为后面的提交都是基于其上面提交来的)

 

 

 

修改以后要记得敲下面的命令:

git add . 

git rebase --continue  

 

如果你想放弃这次压缩的话,执行以下命令:

 

git rebase --abort

 

如果没有冲突,或者冲突已经解决,则会出现如下的编辑窗口:

 

 在这可以将几次的提交说明删了,只留一个

只留着这一条信息。 井号#开头的是注释,不用管。

 

3.再次git log查看一下提交历。。最上面那一条就是刚刚合并的。合并成功了。

 

以上是关于git -- 合并本地多次commit的主要内容,如果未能解决你的问题,请参考以下文章

如何修改git已经提交的信息及合并多次提交

为啥我的git中没有commit and push

合并本地多次commit为一个commit

怎么删除git远程仓库上某次commit

怎么用python去git commit

git stash执行后,我本地未add,未commit的文件全没了,怎么恢复,求大神,非常感谢