Git-关于不熟练的部分的记录

464 阅读1分钟

我们要合并分支有几种方式?

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节点是不可变的,只能删除替换