git非常常用,但是一直没有系统地了解过它的原理,此篇借助https://learngitbranching.js.org/?locale=zh_CN来练习git命令,记录每个关卡练习后对该命令的理解。
基础命令
git commit:提交改动到当前分支(默认为master)。
git branch a:新建名为a的分支。
git checkout a:head指针切换到a分支,当前分支为a分支。
git checkout -b a:新建名为a的分支,并head指针切换到a分支,当前分支为a分支。
git merge a:把a分支的改动并到当前分支master上来 = 多了一个合并两分支的新节点,master分支指针指向新节点,a分支指针不变。
git rebase a:当前master分支改动复制到a分支去 = a分支多了一个新节点,master分支指针指向新节点,a分支指针不变。
高级命令
head:通常情况head指向分支指针,分支指针指向版本的hash值。head->master->c1。
git checkout c1:将head指针指向c1版本,c1是版本哈希值。
git checkout a^:将head指针指向a分支最新版本的上一个版本。^表示父节点,^^表示父节点的父节点。
git checkout a~2:将head指针指向a分支最新版本的上2个版本。~表示引用相对距离,不带数字时和^含义一样。
git branch -f master HEAD~3:将master分支指针移动到head指针的前3个位。
注:checkout移动head指针,brach移动分支指针。
移动提交记录