以下使用 --global 標志全局配置的命令可以 ~/.gitconfig 文件下查看。
創(chuàng)建別名
使用 <alias> 可以極大地提高效率,我常用的有
使用下面的命令創(chuàng)建別名,將 <alias> 替換為別名名稱,將 <command> 替換為要使用別名的命令:
$ git config --global alias.<alias> <command>
常用的別名有:
$ git config --global alias.co checkout
$ git config --global alias.br branch
# 使用你喜歡的或自己的
[alias]
co = checkout
cob = checkout -b
coo = !git fetch && git checkout
br = branch
brd = branch -d
st = status
aa = add -A .
unstage = reset --soft HEAD^
cm = commit -m
amend = commit --amend -m
fix = commit --fixup
undo = reset HEAD~1
rv = revert
cp = cherry-pick
pu = !git push origin `git branch --show-current`
fush = push -f
mg = merge --no-ff
rb = rebase
rbc = rebase --continue
rba = rebase --abort
rbs = rebase --skip
rom = !git fetch && git rebase -i origin/master --autosquash
save = stash push
pop = stash pop
apply = stash apply
rl = reflog
last = log -1 HEAD
logl = log --oneline
接下來,試下效果:
$ git st
$ git cm "xxx"
強制推送
有時,您需要將更改推送到遠程存儲庫并覆蓋文件。您可能習慣于使用 git push --force。
但是如果其他人已經將更改推送到同一分支,會發(fā)生什么?您的命令將清除他們的提交。這肯定是不行的。
Git 有一種更安全的方式來推送更改并覆蓋您的提交。而不是使用的 --force 標志,你可以使用 --force-with-lease。此標志將防止您意外覆蓋其他人的提交。這種工作方式有點神奇,但您可以相信它確實如此。
您可以 force-push 為此編寫別名:
$ git config --global alias.force-push "push --force-with-lease"
現在您可以運行 git force-push,這更容易記住。當然,為了節(jié)省幾次按鍵操作,您還可以添加此別名的簡短版本。
$ git config --global alias.fp force-push
請注意,您只能在 Git 2.20+ 中為別名設置別名。
設置默認推送分支名稱
默認情況下,推送時使用當前分支的名稱作為遠程分支的名稱。
- 使用
git config push.default current將遠程分支的名稱設置為當前本地分支的名稱作為默認名稱。 - 可以使用
--global標志全局配置此選項。
$ git config [--global] push.default current
$ git config --global push.default current
$ git checkout -b my-branch
$ git push -u
# 推送 origin/my-branch
默認情況下禁用快進合并
- 使用
git config --add merge.ff false禁用所有分支的快進合并,即使可能。 - 您可以使用
--global標志全局配置此選項。
$ git config [--global] --add merge.ff false
$ git config --global --add merge.ff false
$ git checkout master
$ git merge my-branch
# 即使有可能也不會快進
列出所有 Git 別名
- 使用
git config -l列出的配置文件中設置的所有變量。 - 使用管道運算符(
|)管道輸出,grep alias表示僅保留別名。 - 使用管道運算符(
|)管道傳輸,并使用sed的/^alias\.//g'刪除別名。 每個別名的一部分。
$ git config -l | grep alias | sed 's/^alias\.//g'
# st=status
# co=checkout
# rb=rebase
添加提交消息模板
為當前存儲庫設置提交消息模板??梢允褂?git config commit.template 指定 <file> 的提交當前庫信息模板。
$ git config commit.template <file>
假設我們使用 "commit-template"作為我們的提交消息模板:
$ git config commit.template "commit-template"
commit-template 參考如下:
fix(<模塊>): <描述>
#<具體描述>
#<問題單號>
# type 字段包含:
# feat:新功能(feature)
# fix:修補bug
# docs:文檔(documentation)
# style: 格式(不影響代碼運行的變動)
# refactor:重構(即不是新增功能,也不是修改bug的代碼變動)
# test:增加測試
# chore:構建過程或輔助工具的變動
# scope:用于說明 commit 影響的范圍,比如數據層、控制層、視圖層等等。
# subject:是 commit 目的的簡短描述,不超過50個字符
# Body:部分是對本次 commit 的詳細描述,可以分成多行
# Footer:用來關閉 Issue或以BREAKING CHANGE開頭,后面是對變動的描述、以及變動理由和遷移方法
詳細的 Git 提交規(guī)范,可以參考 Vue 或 Angular 規(guī)范。
配置 Git 用戶信息
- 使用
git config user.email <email>為當前儲存庫設置用戶的電子郵件。 - 使用
git config user.name <name>為當前儲存庫設置的用戶名。 - 您可以使用
--global標志來配置全局用戶信息。
$ git config [--global] user.email <email>
$ git config [--global] user.name <name>
配置當前存儲庫的用戶
$ git config user.email "xxx@xxx.xxx"
$ git config user.name "O.O"
配置全局 Git 用戶
$ git config --global user.email "xxx@xxx.xxx"
$ git config --global user.name "O.O"
配置存儲庫的行尾
- 使用
git config core.eol [lf | crlf]配置行尾。 -
lf是 UNIX 行的結尾(\n),而crlfDOS 行的結尾是(\r\n)。
$ git config core.eol [lf | crlf]
配置為使用 UNIX 行結束符
$ git config core.eol lf
自動更正 Git 命令
將 Git 配置為自動更正鍵入錯誤的命令??梢允褂?git config --global help.autocorrect 1 使 Git 的自動更正。
$ git config --global help.autocorrect 1
$ git sttaus # 改為運行 "git status"
配置 Git 文本編輯器
默認情況下打開 Git 使用的是 vi 編輯器,如果你沒怎么使用過 Linux 系統(tǒng)的話,可能不是很熟。你可以通過下面的命令來使用其他編輯器打開 Git。
使用 git config --global core.editor <editor-command> 調用 <editor-command> 作為 Git 文本編輯器。
$ git config --global core.editor <editor-command>
將 VS Code 設置為 Git 文本編輯器
$ git config --global core.editor "code --wait"
將 vi 作為 Git 的文本編輯器
$ git config --global core.editor "vi"
編輯 Git 配置文件
使用 git config --global -e 在默認 Git 文本編輯器中打開 Git 全局配置文件。
$ git config --global -e
shell 別名
$ git config --global alias.hello "!echo hello"
$ git config --global alias.dad '!curl https://icanhazdadjoke.com/ && echo'