Git<git rebase的使用>

在团队开发中,你只负责一个功能点,但是你却有10-20次的提交记录,等到代码合并推送远程时,你会发现都是你的提交记录,不方便阅读和查看。因此就需要到了 git rebase

提示:git rebase 适用于本地提交记录的合并(未推送到远程之前进行的合并)

本地提交合并:
//查看提交记录
git log 
image.png

上图所示,我本地有3条记录未提交,如果我想把这3条记录合并为一条记录,即可以进行 git rebase操作:

//合并最近的 3 次提交纪录
git rebase -i HEAD~3

pick 562d4f78 修改1
pick 734f6199 修改2
pick d0cb5976 修改3

注:
第一列是rebase具体执行的操作,其中操作可以选择,其中含义如下:
选择pick操作,git会应用这个补丁,以同样的提交信息(commit message)保存提交
选择reword操作,git会应用这个补丁,但需要重新编辑提交信息
选择edit操作,git会应用这个补丁,但会因为amending而终止
选择squash操作,git会应用这个补丁,但会与之前的提交合并
选择fixup操作,git会应用这个补丁,但会丢掉提交日志
选择exec操作,git会在shell中运行这个命令

(自动进入 vi 编辑模式)
下图中的标注处我把 pick 改为了 s
修改完成后直接保存(按Esc键,按 shift+ ':' ,然后输入 :wq)

image.png

我这边会报这个错误,不过直接按 E 继续编辑就行了
image.png

下图标记处为合并后的提交备注,我这边直接合并为一个备注
image.png

修改完成后直接保存(按Esc键,按 shift+ ':' ,然后输入 :wq)
image.png

这时候基本上就已经合并成功了,再次输入 git log查看,之前的3条记录已经被合并为1条了

image.png

然后再把本地的记录提交到远程分支上

git push origin new-swx
image.png

本地提交的3条记录,被合并为1条提交到远程,里面的内容为3条提交记录修改的整合

远程提交合并:

之前已经说了 git rebase适合于本地提交的合并,所以说要想合并远程的提交是不能进行直接操作的。

在远程分支 new-swx上,我想要把标注的3条提交给合并,我需要怎么做?


image.png

解决方案:

1.在new-swx 上合并前3次的提交记录,具体流程可参考上面的本地合并流程

git rebase -i HEAD~3

2.删除远程 new-swx分支并推送本地 new-swx分支

git push origin :new-swx && git push origin new-swx

最终实现效果:

image.png

可能会遇到的问题:
image.png
git rebase --continue   //继续执行
git rebase --abort      //终止运行
git rebase --skip       //跳过运行
git rm -fr ".git/rebase-merge"  //删除这个文件
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容