一般我们在软件开发的流程中,开发者要把自己修改的代码根据功能拆分成一个个相对独立的提交,一个提交对应一个功能点,而且要在对应的commit log message里描述清楚。在合并和推送之前检查修改提交记录时常需要进行此操作。
场景四实际就是在场景三团队项目工作流程中增加一步“Git Rebase”,即在mybranch分支上完成工作之后,为了让我们更容易回顾、参考log记录,用git rebase命令重新整理提交记录。
注意:不要通过git rebase对任何已经提交到远程仓库中的提交记录进行修改。
git rebase命令的格式大致如下:
git rebase -i [startpoint] [endpoint]
其中-i的意思是--interactive,即弹出交互式界面让用户编辑完成合并操作,[startpoint] [endpoint]指定了一个编辑区间,如果不指定[endpoint],则该区间的终点默认是当前分支的HEAD。
一般只 指定[startpoint],即从某一个提交节点开始,可以使用HEAD^^,HEAD~100、commitID或者commitID的头几个字符来指定,比如下面的命令指定重新整理HEAD之前的3个提交节点。
git rebase -i HEAD^^^
我们先用git log查看一下以往版本的提交记录。
再执行git rebase -i HEAD^^^(重新整理HEAD之前的3个提交节点)
如果我们删除了Listener3版本,即删除了"pick d2ac03a Listener3"这一行,如下图所示。
然后输入:wq按Enter键保存退出,可以看到以下提示。
这时用VSCode打开冲突文件,冲突提示如下图所示。
可以根据提示选择保留哪个更改,也可以直接编辑文件去掉提示信息。
解决冲突后需要将修改后的文件存入暂存区,最后执行以下命令完成整理。
git add .
git rebase --continue
删除的Listener3版本的内容很可能会合并到Listener4版本,这时往往需要重新修改Listener4版本的提交日志消息,因此在完成操作之前需进入文本编辑器修改Listener4版本的提交日志。保存退出后即可完成整理操作。
这时查看提交日志可以发现Listener3版本已经不存在了。
最后,和场景三的第四步一样,先切换回master分支,将最新远程origin/master分支同步到本地存储库,再合并mybranch分支到master分支,推送到远程origin/master分支之后即完成了一项开发工作。
查看提交日志
在gitee中查看提交分支
以上内容为中科大软件学院《高级软件工程》课后总结,感谢孟宁老师的倾心教授,老师讲的太好啦(^_^)
参考资料:《代码中的软件工程》 孟宁 编著