1.git cherry-pick A B C
假如我们有两条分支master和dev,现在我们要将dev分支上的feature D和feature E合并到master上要怎么办呢?
- 方法一:首先切换到dev分支,查看各项commit-id,然后切换到master分支上,也是master的最新提交C处。之后使用git merge D,git merge E。
|
|
- 方法二:首先也要查看dev上的commit-id,然后在C上使用git cherry-pick D E。
|
|
好像两个方法优劣对比不是很强,但是cherry-pick后跟的commit-id可以有很多个,当需要抓取的feature较多时方法二的优势就出来了。
注意,如果是 HEAD 上游的提交,那就不能用cherry-pick抓取过来,因为很明显不能将同一分支上的历史提交再次提交。
2.git rebase
多人协作大家基本习惯了merge的方式进行提交代码。但是最大的弊端就是提交历史变得有许多平行线。实际的确也是并行开发,但是当要追踪修改历史的时候,嗯,你可以冲上一杯咖啡了哈哈哈。
先更新master分支,在dev分支上使用命令
git rebase master
这样看起来就像是在master上的节点检出的分支又再次合并回主分支,这样整个提交树就非常线性,易于追踪。另一个操作是
git rebase -i commit-id
这个命令可以“可视化操作提交历史”,有丢弃,修改,排序等功能,可以使用上述的cherry-pick命令代替。本人觉得在命令行操作哪有什么可视化操作哈哈哈。需要注意的是如何在vi下编辑,按i进入编辑状态,按esc进入命令状态,在命令状态中输入:wq回车是保存并退出,:q!回车是不保存退出。更多的搜索vi命令吧。
3.git stash
这个命令挺有用,尤其是还没做完手头上的工作,又不得不做别的事(切换到别的分支治疗),并且不想因此commit,那么这系列命令对你很有用!
|
|