我们要合并分支有几种方式?
git merge |git rabase |git merge --squash
三个命令的区别是什么呢?我们来画图解释下就清楚了
git merge
在master分支执行 git merge branch1 把branch1所有提交和当前的master版本做对比并(处理冲突)合并
git rebase
在branch1分支上 git rebase master 即在master上重演所有master没有的commit
git merge [branch] --squash
和merge类似,但如图1中6、7不再连接,意味着这样branch 再和master合并还是得重头开始,而不是在7这个commit处分叉
git reset
reset指令的本质是重置HEAD指针以及它所指向的branch分支
--hard 清空工作目录和暂存区的所有改动
--soft 保留工作目录和暂存区的所有改动
--mixed 保留工作目录清空暂存区的所有改动
git checkout [commitId,branch,tag]
checkout指令的本质是移动HEAD指针而不改变所指向的节点标记
git cherry-pick [commitId1,commitId2,...]
cherry-pick指令和rebase类似也是重演commit提交,不同的是在当前重演cherry-pick选中的commit
git revert [commitId]
revert指令生成一个指定commit节点完全相反的提交,为什么是这样呢,,由于commit节点是不可变的,只能删除替换