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移動分支指針。
移動提交記錄