Git作为分布式的版本管理系统,对于代码版本的管理至关重要,使用git需要了解三个区域:暂存空间、本地仓库和远程仓库。使用git作为版本控制,都是要在各自的分支上,在本地开发,每天需要把当天完成的任务提交到本地仓库,需要版本迭代时需要推送到远程仓库,而暂存空间就是你在本地开发时,新增或者修改的文件使用git add会添加进暂存区,然后使用git commit才能提交到本地仓库。这是介绍了三个区域,有些跑题了,回归到git rebase的命令上。
git rabse翻译过来就是“变基”的意思,好听一些就是“衍合”的意思,就是因为开发人员在各自分支上开发,然后每天进行提交,所以分支的提交记录会是一个很臃肿的提交记录,然后每个开发人员再推送到远程仓库,发版前merge等各种操作,会显得很乱,如下图:
这时就会用到git rabse,git rabse的命令要使用在推送远程仓库之前,把本地仓库的提交历史变得简洁一些,具体使用如下。
以下是我本地提交的历史:
如果这样的提交历史推送到远程仓库,会被同事给盘的,所以用git rebase的命令变一下基,衍合成一个简洁的提交历史。
命令:git rebase -i [startpoint] [endpoint]
其中-i是--interactive,即弹出交互式的界面让用户编辑完成合并操作,[startpoint]
[endpoint]
则指定了一个编辑区间,如果不指定[endpoint]
,则该区间的终点默认是当前分支HEAD
所指向的commit
(注:该区间指定的是一个前开后闭的区间)。
步骤1:使用git log查看提交历史
步骤2:找出需要衍合的commit_id,复制前几位就行,使用命令git rebase -i [start commit_id] [end commit_id]进行编辑:
然后会弹出编辑页面,让你使用里面的提示进行编辑此次的衍合:
步骤3:我们使用命令s,就是合并到最新的提交记录上:
步骤4:保存文件,会弹出编辑提交备注的编辑页面,可以进行编辑重新改写提交信息,也可以不编辑,使用之前的提交信息:
保存该文件并退出,然后变基的工作的就完成了,本地提交历史也会变得如下这样简洁:
这时再推送到远程仓库,也就不用担心被盘了!
总之一句话:git rebase让你的仓库有一个简洁的提交历史。