现象:gitee上提交了好几笔代码,但是都是修改的同一个文件;

目的:如何把这几笔提交融合到一笔中,减少commit信息;

实现:

例子:

1.使用git log命令查看自己的提交:

修改内容是:

(1)fbee242b3 修改内容:

(2)3a118a0 修改内容:

 

最新的两笔提交都是修改的lcr*.bb文件,那么想把这两笔合并成一笔,需要进行如下操作:

1.进行rebase操作:

(1)1复制你需要合并到的commit id,比如此次:fbee242b3

(2)git rebase -i xxx   

         git rebase -i fbee242b3

其中 xxx 不需要合并的提交。其中,-i 的参数是不需要合并的 commit 的 hash 值。

也可以使用相对提交,例如我需要合并最近2次提交可以使用(倒数第三次之后的提交会合并,不合并第三次)

git rebase  -i  HEAD^^^

执行这个命令后,会进入历史提交的编辑页面,此时编辑方式为vim,具体如下:

 

 从上面可以看出,最新一次提交的信息;那么需要把3a118a0 合并到fbee242b3中,需要使用squash 关键字:

备注:

pick 的意思是要执行这个 commit
squash 的意识是这个 commit 会被合并到前一个 commit

(3)squash关键字修改合并信息:

修改最新的提交为squash,意思是和前一次提交合并。 然后按i开始编辑,删除pick,插入squash 如下:

然后,按esc退出编辑,再按:,输入wq保存。 若无冲突或者冲突已 fix,则会出现一个 commit message 编辑页面,修改 commit message ,然后保存退出。

备注:如果wq报存后,有错误,则可以执行下边命令,再次修改:

执行git rebase --edit-todo 再次进入vim界面进行编辑;

需要修改下这个提交信息,也可以不修改这个提交信息;

wq保存后,会出现successfully字样:

问题:

git 会压缩提交历史,若有冲突,需要进行修改,修改的时候保留最新的历史记录,修改完之后输入以下命令:

git add .

git rebase --continue

若想退出放弃此次压缩,执行命令:
git rebase --abort

(4)同步到远程仓库
输入:git push -f   或者  git push --force


查看远程仓库效果,多次 commit 已被合并成一次 commit:

 

 

 

 

 

 

Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐