1、Git 工作流程
http://www.ruanyifeng.com/blog/2015/12/git-workflow.html
git push -f origin HEAD^:master
删除服务器上最近的一次提交
git push -f origin HEAD^:master
2、Git分支管理
动画形式演示分支效果:
http://onlywei.github.io/explain-git-with-d3/
https://learngitbranching.js.org/
https://nvie.com/posts/a-successful-git-branching-model/




3、Git merge:
在 Git 中合并两个分支时会产生一个特殊的提交记录,它有两个父节点。翻译成自然语言相当于:“我要把这两个父节点本身及它们所有的祖先都包含进来。
Rebase 实际上就是取出一系列的提交记录,“复制”它们,然后在另外一个地方逐个的放下去。
Rebase 的优势就是可以创造更线性的提交历史。如果只允许使用 Rebase 的话,代码库的提交历史将会变得异常清晰。