快捷搜索:  汽车  科技

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分支分叉出来的 以这个图作为初始分支状态

git的命令总结:git命令的进阶和复习,带动图效果,(1)

2.1 fast-forward

git merge默认采用fast-forward的方式,执行git merge等同于执行git merge --ff,–ff是fast-forward的简写。特点:

快进操作:只更新指针的指向 不会创造一个新的commit节点。

缺点:一旦删除分支或者分支指针往前走,会丢掉分支信息(原来这个分支的做了什么在log中体现不出来)

触发时机:合并 bugfix分支到master分支时,如果master分支的状态没有被更改过,这样的合并被称为fast-forward(快进)合并

git的命令总结:git命令的进阶和复习,带动图效果,(2)

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-forwardgit config --global --add merge.ff false//第二种方案:某个分支单独禁用fast-forwardgit config branch.【分支名】.mergeoptions "--no-ff"

触发时机:比如master分支的历史记录有可能在bugfix分支分叉出去后有新的更新。

git的命令总结:git命令的进阶和复习,带动图效果,(3)

此时如果把bugFix合并到master,合并两个修改会生成一个提交。这时,master分支的HEAD会移动到该提交上。

git的命令总结:git命令的进阶和复习,带动图效果,(4)

3. 变基(rebase)

reabse和merge其实都可以看作为合并操作,rebase 的优势就是可以创造更线性的提交历史 还是以这张图为列

执行以下命令:

//rebase bugfix分支到master分支➜ ~ git:(master) ✗ git rebase bugfix

git的命令总结:git命令的进阶和复习,带动图效果,(5)

猜您喜欢: