git的命令总结:git命令的进阶和复习,带动图效果,
git的命令总结:git命令的进阶和复习,带动图效果,git rebase个人比较推荐第二个Git学习网站猴子都能懂的git,图文结合,简单明了,本文将介绍一些常用 Git 指令,作为一个学结learnGit在线学习猴子都能懂的git小姐姐用动画图解Git
码个蛋(codeegg) 第 974 次推文
作者:老郑的技术杂货铺链接:https://juejin.im/post/5e9e49356fb9a03c917fe7fd
1. 学习途径
个人学习途径主要以下几个:
-
learnGit在线学习
-
猴子都能懂的git
-
小姐姐用动画图解Git
个人比较推荐第二个Git学习网站猴子都能懂的git,图文结合,简单明了,本文将介绍一些常用 Git 指令,作为一个学结
-
git rebase
-
git merge
-
git reset
-
git revert
-
git cherry-pick
-
git fetch
-
git pull
-
git reflog
2. 分支的合并(merge)
对于merge而言,又有两个合并策略:
-
fast-forward
-
no-fast-forward
假设bugfix分支是从master分支分叉出来的 以这个图作为初始分支状态
2.1 fast-forwardgit merge默认采用fast-forward的方式,执行git merge等同于执行git merge --ff
,–ff是fast-forward的简写。特点:
快进操作:只更新指针的指向 不会创造一个新的commit节点。
缺点:一旦删除分支或者分支指针往前走,会丢掉分支信息(原来这个分支的做了什么在log中体现不出来)
触发时机:合并 bugfix分支到master分支时,如果master分支的状态没有被更改过,这样的合并被称为fast-forward(快进)合并
2.2 no-fast-forward--no-ff 指的是强行关闭fast-forward方式 使得每一次的合并都创建一个新的commit记录。完整的命令如下
//即在合并分支命令加入 --no-ff 后缀的方式运行
$ git merge --no-ff -m "merge with no-ff" dev
-
如何设置默认为no-fast-forward模式
//第一种方案:全局设置禁用fast-forward
git config --global --add merge.ff false
//第二种方案:某个分支单独禁用fast-forward
git config branch.【分支名】.mergeoptions "--no-ff"
触发时机:比如master分支的历史记录有可能在bugfix分支分叉出去后有新的更新。
此时如果把bugFix合并到master,合并两个修改会生成一个提交。这时,master分支的HEAD会移动到该提交上。
3. 变基(rebase)
reabse和merge其实都可以看作为合并操作,rebase 的优势就是可以创造更线性的提交历史 还是以这张图为列
执行以下命令:
//rebase bugfix分支到master分支
➜ ~ git:(master) ✗ git rebase bugfix