# 前言
實際開始使用 Git 之後,會執行到的指令幾乎是大同小異,不外乎 git status
、 git add
、 git commit -m
等指令不斷的重複。
雖然這些指令都不算太長,不過在輸入指令的過程,無形之中是會浪費不少打字時間的。
這邊呼籲 GUI 派的讀者,不要在看到這句話之後趁機推坑,不然會讓指令派的讀者過得太舒服!!
如果有辦法少打幾個字,那麼 打指令時會產生一種快感 將會在不知不覺中省下不少時間!
為指令派的讀者獻上此系列文最後的溫柔:
# Git 縮寫相關指令
分別介紹一下「設定縮寫」、「查看縮寫」、「刪除縮寫」三個指令:
# 設定縮寫的指令
使用這個指令,就可以在設定檔中新增指令的縮寫:
| git config --global alias.[想要縮寫的名稱] [原本的指令] |
例如:
| git config --global alias.st status |
表示要讓 git st
指令等同於 git status
的效果。
注意這個行為並不是「取代」,只是設定「縮寫」,所以 git st
與 git status
兩個指令都可以在你的 Git 專案起作用。
# 查看已設定的縮寫
要查看自己設定了哪些縮寫的話,可以這樣下指令查詢:
| git config --get-regexp alias |
# 刪除縮寫設定
當發現有些縮寫設定後卻都用不到,可以使用這個指令把縮寫移除:
| git config --global --unset alias.[縮寫名稱] |
# 常見指令縮寫
介紹一下筆者自己有設定,也推薦可以使用的縮寫
# git status
| git config --global alias.st status |
執行完後,未來執行 git status
,只需要輸入下列指令,就能代表相同的意思
# git log
查看 log 的文章有提到 git log
常搭配的參數,例如 --oneline
、 --graph
,如果設定成縮寫就會方便很多:
| git config --global alias.l "log --oneline --graph" |
之後只要執行縮寫指令,就能達到完整指令的效果:
此外,還有那串幾乎不太可能直接輸入使用的 format 指令,也可以設定縮寫:
| git config --global alias.ls "log --oneline --graph --pretty=format:'%C(yellow)%h%Creset - %C(cyan)<%an>%Creset %s %C(magenta)(%ar)%Creset'" |
打完之後就可以用這個指令呈現整齊的 log 資訊:
註: -n
( n
為自然數 ),是 git log
原本就能用的參數,是讓 git log
呈現特定筆數的參數。
# git add
git add
指令沒什麼好縮寫的,這裡設定的是「將檔案移出暫存區」指令。
當時還不知道 git reset
也能將檔案移出暫存區,一直覺得 git restore --staged
指令不好打,於是設定了這個縮寫:
| git config --global alias.rmadd "restore --staged" |
# git commit
commit
系列算是很常用的指令,介紹一下筆者有設定的縮寫。
# git commit
git commit
本身的縮寫
| git config --global alias.cm commit |
# git commit -m
提交版本時會用到的縮寫
| git config --global alias.cmm "commit -m" |
命名概念很單純,就是 commit
+ -m
= cmm
。
這個指令設定完之後,提交版本時就不用多打 -m
參數了:
# git add . + git commit
一次提交所有異動檔案的縮寫:
| git config --global alias.cmam "commit -am" |
# git commit --amend -m
要「修正上一個版本提交的訊息」會用到的指令,也設定一個縮寫:
| git config --global alias.cmrn "commit --amend -m" |
概念是 commit rename 的簡稱: cmrn
。
# git commit --amend --no-edit
單純的加一些資料到最近的版本指令也是頗長,使用縮寫會方便很多:
| git config --global alias.cmcm "commit --amend --no-edit" |
筆者的命名概念是 「兩個 commit」 ,使用了 cmcm
當作這個指令的簡稱。
# git branch
再來是分支系列的縮寫
# git branch
git branch
本身的縮寫:
| git config --global alias.br branch |
# git branch -m
重新命名目前分支指令的縮寫:
| git config --global alias.brm "branch -m" |
# git branch -d
刪除分支的指令縮寫:
| git config --global alias.brd "branch -d" |
# git branch -f
強制建立分支指令縮寫:
| git config --global alias.brf "branch -f" |
# git checkout
切換分支的縮寫:
| git config --global alias.co checkout |
# git checkout -b
建立並且切換分支的縮寫:
| git config --global alias.cob "checkout -b" |
# 另一種設定縮寫的方式
在 Git 初始化設定 文章中,常見問題「第四題」曾經提到過, git config --global
指令是用來更改 .gitconfig
檔案的指令。
既然我們是用它來設定縮寫,代表我們可以直接去 .gitconfig
檔案編輯縮寫。
如果你沒操作過這個檔案的話,可以到下列的路徑開啟檔案:
Mac
: ~/.gitconfig
Windows
: C:\Users\你的使用者名字\.gitconfig
接著請找到 [alias] 區塊,就可以看到剛剛設定縮寫的資料,如果沒有設定過任何縮寫,可以「手動新增」[alias] 區塊
這裡提供所有筆者設定資訊給大家參考,需要的話可以複製回去更改成習慣的設定:
| [alias] |
| |
| st = status |
| |
| |
| l = log --oneline --graph |
| ls = log --oneline --graph --pretty=format:'%C(yellow)%h%Creset - %C(cyan)<%an>%Creset %s %C(magenta)(%ar)%Creset' |
| rl = reflog --pretty=format:'%C(yellow)%h%Creset %C(red)%gd%Creset %C(cyan)<%an>%Creset %C(auto)%s%C(reset) %C(magenta)(%cr)%C(reset)' |
| |
| |
| all = add . |
| rmadd = restore --staged |
| |
| |
| cm = commit |
| cmm = commit -m |
| cmam = commit -am |
| cmcm = commit --amend --no-edit |
| cmrn = commit --amend -m |
| cmempty = commit --allow-empty -m --no-edit |
| |
| |
| br = branch |
| brv = branch -v |
| brm = branch -m |
| brd = branch -d |
| brf = branch -f |
| |
| |
| |
| co = checkout |
| cob = checkout -b |
| |
| |
| rst = reset |
| rsth = reset --hard |
| rsthp = reset --hard HEAD^ |
| rstp = reset HEAD^ |
| rsto = reset --hard ORIG_HEAD |
| |
| |
| rb = rebase |
| rbi = rebase -i |
| rbc = rebase --continue |
| |
| |
| fetchp = fetch --prune |
| bra = branch -a |
| psd = push origin -d |
| psf = push -f |
| pso = push -u origin |
| |
| getalias = config --get-regexp alias |
# 常用指令一覽表
# 初始設定
# 查詢目前 Git 所使用的 Email
| git config --global user.email |
# 設定 Git 的使用者名稱
| git config --global user.name 使用者名稱 |
# 查詢 Git 目前設定的文字編輯器
# 設定 Git 文字編輯器
| git config --global core.editor 程式名稱 |
# 將 Git 文字編輯器 Visual Studio Code
| git config --global core.editor "code --wait" |
詳細資訊可參考 GitHub 官方文件
# 開始使用 Git
# 初始化 Git 儲存庫
# 將工作目錄所有檔案加到暫存區
# 將指定的檔案加到暫存區
# 將暫存區的檔案提交到 Git 儲存庫
# 一次完成加入暫存區與提交版本
| git commit --am "版本訊息" |
| git commit -a -m "版本訊息" |
# 查詢目前工作目錄中的變化
# 查詢 commit 資訊
# 開發過程會用到的指令
# 復原加入暫存區的檔案
| git restore --staged 檔案名稱 |
# 復原修改檔案的編輯內容
# 修正最後一次提交的訊息
| git commit --amend -m "訊息" |
# 修正最後一次的提交內容
# 使用 .gitignore
排除檔案
- 在工作目錄新增
.gitignore
檔案
- 在檔案中輸入要排除的檔案名稱
# 讓分支回到過去的 commit
# Mixed Reset
# Soft Reset
| git reset --soft commitID |
# Hard Reset
| git reset --hard commitID |
# 重新定義基底
# rebase 互動模式
# 復原 commit
# 使用 Git 分支
# 查詢分支
# 建立分支
| git branch 分支名稱 |
| git checkout -b 分支名稱 |
# 強制建立已存在分支
# 切換分支
# 刪除分支
# 強制刪除分支
# 合併分支
# 發生衝突,放棄合併
# 使用遠端儲存庫
# 新增遠端儲存庫的位置
| git remote add 遠端的名稱 遠端網址 |
# 推送分支至遠端並追蹤
| git push -u 遠端名稱 地端分支:遠端分支 |
# clone 遠端儲存庫
# 更新遠端分支的異動回地端
# 刪除遠端分支
| git push 遠端名稱 --delete 遠端分支名稱 |
| git push 遠端名稱 -d 遠端分支名稱 |
| git push origin :遠端分支名稱 |
# 同步遠端分支
# 修剪遠端分支