Git 常用配置和技巧

以下使用 --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ī)范,可以參考 VueAngular 規(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),而 crlf DOS 行的結尾是(\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'
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內容