1. git commit 提交記錄看作是項目的快照。提交記錄非常輕量,可以快速地在這些提交記錄之間切換!
2. git branch Git 的分支也非常輕量。它們只是簡單地指向某個提交紀錄
(1) git branch newBranch 創建一個名為newBranch的分支
(2) git checkout newImage 切換分支
(3) git checkout -b <your-branch-name> 創建并切換到新分支
3.合并分支
(1)git merge 合并倆個分支時會產生一個特殊的提交記錄,它有倆個父節點(翻譯成倆個父節點本身及它們所有的祖先都包含進來)
(2)git rebase 實際上就是取出一系列的提交記錄,“復制”它們,然后在另外一個地方逐個的放下去。Rebase 的優勢就是可以創造更線性的提交歷史。如果只允許使用 Rebase 的話,代碼庫的提交歷史將會變得異常清晰。
4.在提交樹上移動
(1) "HEAD"。 HEAD 是一個對當前檢出記錄的符號引用 —— 也就是指向你正在其基礎上進行工作的提交記錄。HEAD 總是指向當前分支上最近一次提交記錄。大多數修改提交樹的 Git 命令都是從改變 HEAD 的指向開始的。HEAD 通常情況下是指向分支名的
(2)"相對引用"。指定提交記錄哈希值的方式在 Git 中移動不太方便。并且哈希值在真實的 Git 世界中也會更長。例如前一關的介紹中的提交記錄的哈希值可能是 fed2da64c0efc5293610bdd892f82a58e8cbc5d8。比較令人欣慰的是,Git 對哈希的處理很智能。你只需要提供能夠唯一標識提交記錄的前幾個字符即可。因此我可以僅輸入fed2 而不是上面的一長串字符。通過哈希值指定提交記錄很不方便,所以 Git 引入了相對引用。這個就很厲害了! 使用相對引用的話,你就可以從一個易于記憶的地方(比如bugFix 分支或 HEAD)開始計算。相對引用非常給力,這里我介紹兩個簡單的用法:
1. 使用 ^ 向上移動 1 個提交記錄
2. 使用 ~<num> 向上移動多個提交記錄,如 ~3
(3)強制修改分支位置 git branch -f master HEAD~3 這個命令會將 master 分支強制指向 HEAD 的第 3 級父提交。
5.撤銷變更
(1) git reset 通過把分支記錄回退幾個提交記錄來實現撤銷改動。你可以將這想象成“改寫歷史”。git reset 向上移動分支,原來指向的提交記錄就跟從來沒有提交過一樣。例 gie reset HEAD~1.雖然在你的本地分支中使用 git reset 很方便,但是這種“改寫歷史”的方法對大家一起使用的遠程分支是無效的!
(2) git revert 將遠程分支退回上個版本,git revert HEAD