Git通过变基将提交变得更美观
几种常见的工作流
全部在主干上进行开发的主干开发
工作流
将多个提交合并为一个
- 首先在一个空的文件夹中使用
git init
创建一个空的仓库 - 创建多次提交
- 现在使用
git log --graph
查看当前提交情况
- 使用
git rebase -i <哈希值>
进行变基,合并的是这个哈希值对应提交之后的东西,所以选择最开始的那个提交04a25d7dec4ef8b4428916df33f17abc91de0746
git rebase -i 04a25d7dec4ef8b4428916df33f17abc91de0746
会跳转至一个新的页面
阅读命令的提示信息,这两个提交一个作为变基之后的节点,一个作为合入的节点
我们把
e1eba39
当作合入的节点点击esc然后输入
:wq!
会跳转至一个写描述信息的新的页面
点击esc然后输入
:wq!
通过git log --graph
我们可以看到,之前是三个提交的,现在前面两个提交已经合为了一个
Gitlab的合并请求
环境搭建
搭建一个如图的测试环境
master
test1
test2
Merge commit
发起一个合并请求
查看现在的分支图
同理合入test2查看分支图
Merge commit with semi-linear history
在合并test2
的时候会
在本地进行变基
1
2 git fetch origin
git checkout -b test2 origin/test2
检出test2之后使用git log --graph
查看test2的信息
再使用git log --graph --all
查看全部分支的信息
我们要做的就是把test2的提交移到master之后
记一下几个关键的节点
父节点
:2a69d1839c03e5ff2b968bbfd687a5bd673013f2test2节点
:28be9089b6bd914a1cac598690720a78c6419b9fmaster节点
:5bbcbdfd3bd0e25a39cd14a1b94a88890b2b0ca0
现在要做的是把test2放到master之后
所以使用git rebase -i 5bbcbdfd3bd0e25a39cd14a1b94a88890b2b0ca0
根据提示输入 git rebase --continue
来解决冲突
进入1.py解决冲突
将修改add至缓存区,然后使用commit提交至本地仓库
从变基之后的分支图可以看出,我们只需要把当前的HEAD当作master提交到远端就完成了变基
下面切换至master分支git checkout master
使用挑拣提交拿到变基操作的提交git cherry-pick 43104b5
最后使用git push origin master
将master推送至远端
通过以上操作之后发现,合并按钮还是灰色的。。。。理论上是成功了,所以,现在我也不知道咋办了。所以算了,今天就当学习变基了。