經過前兩篇比較文書而廣泛的介紹,這次來介紹一下我自己比較常用的幾個指令吧~
git pull
、 git push
這種相對基礎的指令,也是蠻常使用的。
git checkout -b 新分支名稱
可以直接在目前的 Commit 點建立新的分支,並且直接切換到新的分支。如此一來不用分成兩個指令去做建立+切換兩件事情。
git merge --no-ff origin/分支名稱
這個指令可以將其他的分支合併到目前所在的分支。
--no-ff:簡單來說是將合併的點移入這個分支,比較詳細的內容可以參考第一篇文章。
origin:避免將遠端分支拉下來後沒有更新,因此用遠端的內容合併可以避免沒有更新到新的內容。
git reset --hard 分支名稱或是Hash值
可以用這個指令去調整修改的內容。用 --hard
可以直接忽略從指定的點上後面的所有修改,而用 --soft
可以將指定的點後面的修改退回 Stage 階段,讓你選擇這些修改的去留。
另外,也可以搭配 git fetch --all
做使用,先將分支內容 fetch 下來之後,再用 reset --hard 去將本地的該分支變得跟遠端相同。
git log --oneline
可以用這個指令去顯示此分支的修改紀錄,由於基礎的 git log
指令會顯示的紀錄稍嫌冗長,因此加上 --oneline
讓 Hash 以及修改紀錄濃縮到一行。
git status
由於在 rebase 跟 merge 在處理時可能會需要解衝突導致處理到昏天暗地(?),因此中間可以隨時用這個指令去確認現在處理到哪個階段了。
git rebase -i Hash值
用這個指令可以整理這個指定 Hash 值以後的 Commit 點(不包含此 Commit 點),可以重新排序、修改修改訊息或是濃縮 Commit 點。下指令開啟 vim 編輯器後,會看到每個點的預設類別為 pick
,以下是其他常用的方式:
濃縮:將 pick
修改成 s
,即可將這個點跟前一個點進行濃縮。
修改訊息:將 pick
修改成 reword
。
排序:直接複製貼上即可調整,有時會產生前後衝突。
刪除:直接將這個點刪除即可。
git commit --amend
這個指令可以修改前一個的訊息內容。
git rebase -i HEAD~3
可以直接調整好幾次 Commit 點以前的內容。
在我們打上修改訊息時,訊息內容可以直接包含 Hash 值或是 Issue 的編號,這樣就可以直接在建立 Commit 點時創建超連結,例如:
git commit -m "Fix bug in feature X (see 1a2b3c4d)"
最後推薦給大家一個好用的小工具 -- tig,這個工具可以幫你可視化目前的 git 圖,十分方便喔!