Git心路历程:
这是啥,我做了啥,怎么conflict了。
我会了,交给我,都可以。
学不会,怎么还有rebase·cherry-pick·reflog·bisect。
入门
- clone, init, add, mv, reset, rm, bisect, log, status
- branch, checkout, commit, diff, merge, rebase, tag
- fetch, pull, push
项目历史管理
有向无环图,Git中用DAG表达历史记录,每个节点表示一个版本。
分支和标签也都是节点,同时它们指向它们各自对应的版本。而HEAD指针通常指向分支节点,但HEAD也可以直接指向版本节点。
git merge-base
查询两个提交的分叉点父引用
^
后缀表示父对象,如HEAD^
指向HEAD
的父对象。- 如果节点有多个父对象,则用数字区分,
HEAD^1 HEAD^2
。 ~
后缀是父对象的链式表达。HEAD~2
等于HEAD^^
。
git-name-rev - Find symbolic names for given revs
。git log | git name-rev --stdin
- 可打印出历史记录相对当前提交的关系。
reflog
修订区间查询
git log
显示一组提交- 双点符号,表示两个修订之间的所有记录,
HEAD~2..HEAD
包括HEAD HEAD^
。 ^
前缀表示排除。git log master maint ^next
显示master和maint分支的提交,同时排除在next中也存在的提交。
git log
格式--pretty
用来调整输出格式git log --graph --oneline
可以图形化输出记录,同时每个提交只有一行信息。