学习链接:https://oschina.gitee.io/learn-git-branching/
git merge 与 git rebase 的区别
git merge :在 Git 中合并两个分支时会产生一个特殊的提交记录,它有两个父节点。翻译成自然语言相
当于:“我要把这两个父节点本身及它们所有的祖先都包含进来。”
#实现步骤:
#创建分支bugFix,并提交
git checkout -b bugFix && git commit
#切换回master,提交master,并且合并bugFix
git checkout master && git commit && git merge
git rebase : 优势就是可以创造更线性的提交历史,这听上去有些难以理解。如果只允许使用 Rebase 的
话,代码库的提交历史将会变得异常清晰。
#实现步骤:
#创建分支bugFix,并提交;
git checkout -b bugFix && git commit
#切换回master,并提交master
git checkout master && git commit
#切换回bugFix,并且rebasemaster
git checkout bugFix && git rebase master
git merge 图示:

git rebase 图示:

HEAD:
如果想看 HEAD 指向,可以通过 cat .git/HEAD 查看, 如果 HEAD 指向的是一个引用,还可以用 git symbolic-ref HEAD 查看它的指向
# HEAD 总是指向当前分支上最近一次提交记录。大多数修改提交树的 Git 命令都是从改变 HEAD 的指
# 向开始的。HEAD 通常情况下是指向分支名的(如 bugFix)。在你提交时,改变了 bugFix 的状态,
# 这一变化通过 HEAD 变得可见。
# 向上移动 1 个提交记录
git checkout bugFix^
# 将master分支向上移动 指定个提交记录(-f是强制指定)/ 强制将master分支指向另一个提交
git branch -f master HEAD~3(根据自身需求定数字)
#移动HEAD一次后退指定步
git branch -f HEAD~3

网友评论