Git Rebase小练习
一、 前言
首先感谢孟宁老师课上的指导,本文参考孟老师的文章:《五大场景玩转Git,只要这一篇就够了》。本文旨在实现下图的任务练习。
项目主要有两条分支:master和branch,要求branch分支的提交 A 和 B 在本地存在过,但并不出现在远程网络图中。
二、 任务流程
1、 Gitee新建项目
如图所示,点击新建仓库。
2、 克隆项目
我们可以在终端使用git clone指令将远端的代码和分支信息克隆到本地。
但本文选择在VScode上克隆存储库。
如图点击克隆存储库。
输入gitee上创建的库的URL链接,将库克隆到本地。
3、 创建分支
在VScode终端使用git branch指令为项目创建分支,这里新的分支命名为dev。使用git checkout指令切换当前分支,默认分支是master,现切换到dev分支。
4、 对项目文件的修改和提交
按流程图,每个分支都进行了对项目文件的修改和提交,这里我们可以使用git add和git commit指令进行修改和提交。
Master分支上:
进行三次提交。
Dev分支上:
也进行了三次提交,分别命名为A、B、C。
5、 保持本地仓库与远程代码同步
使用git pull指令使本地仓库与远程仓库代码和分支同步。
6、 rebase合并
使用git rebase指令能在完成工作后能重新整理提交记录,使得log记录更容易回顾参考。
这里的指令是git rebase -I HEAD^^^,指定重新整理当前分支HEAD的之前三个节点。这时会打开命令行文本编辑器如下:
我们删除A,B版本,然后:wq保存退出,Vscode打开冲突文件会显示如下(因为C是A、B基础上修改来的):
根据提示保留更改,为了解决冲突我们可以重新提交C文件:
7、 合并,推送,查看日志
使用git merge将分叉的分支合并,git push将本地分支代码推送到远程代码仓库。
使用git log查看提交日志:
可以看到A、B曾在本地存在过,但是在远程提交日志内没有出现。
任务练习完成。
三、 一些思考
在一些课程设计和工程实践的多人项目中也接触过git这一工具,但是更多情况下,只是使用简单的push、commit和pull指令,回头看了一下自己提交的代码显得十分凌乱和琐碎,不同功能模块并没有分开提交的版本,让代码跟踪变得十分困难。
在学习了孟宁老师的文章后,对以后团队项目的管理有了更好的处理方法。一方面是代码提交要按照功能拆分成相对独立的提交,一次提交对应一个功能点;另一方面多关注commit log message,使用git rebase整理记录,使得后续代码跟踪更轻松。
关于git rebase和merge的使用可参考:https://www.jianshu.com/p/4079284dd970