分類
Gandi.net 最新文章

Git 小秘訣,簡化與加快 Git 操作

Git 指令小訣竅

快速切換回去剛剛的分支

用 (-) 就可以切換回剛剛的分支,跟 Shell 一樣

# Checkout master
git checkout master
# Create and checkout to a new branch
git checkout -b git-tips
# Checkout master
git checkout master
# Checkout to the previous branch (git-tips)
git checkout -

 

刪除已經合併回 master 的分支

# Make sure you have checked out master first
git checkout master

# Delete merged branches to master except master
git branch --merged master | grep -v "master" | xargs -n 1 git branch -d

如果不小心把 master 刪除了,用下列指令救回來就好(前提是你有 push 過遠端程式庫):

git checkout -b master origin/master

 

刪除遠端程式庫已不存在的分支

如果你想先確定一下有哪些分支會被刪除,但不想實際刪除,請用 –dry-run:

git remote prune origin --dry-run

實際刪除:

git remote prune origin

 

從目前分支為基礎建立一個新的分支

如果你在 dev 分支,但想要從 master 開始建立分支,基本的作法是:

git checkout master
git checkout -b new-branch

你其實可以直接從 dev 分支開出一個基於 master 的分支

git checkout -b new-branch master

同理,直接基於其他分支開出新的分支

git checkout -b new_branch base_branch

 

Git 設定小訣竅

排除某些檔案,並將設定檔套用在所有專案上

touch ~/.gitignore
git config --global core.excludesFile ~/.gitignore

或是寫入設定檔:

vi ~/.gitconfig:
[core]
 excludesFile = ~/.gitignore

 

在 Fetch/Pull 時自動清除遠端已砍掉的分支

git config --global fetch.prune ture

或是寫入設定檔:

vi ~/.gitconfig:
[fetch]  
 prune = true

 

在 rebase 互動模式時,預設啟用 Autosquash

git config --global rebase.autosquash true

或是寫入設定檔:

vi ~/.gitconfig:
[rebase]
 autosquash = true

 

設定預設的編輯器

git config --global core.editor vim

或是寫入設定檔:

vi ~/.gitconfig:
[core]
 editor = vim

 

自訂 diff 工具

git config --global diff.tool vimdiff

或是寫入設定檔:

vi ~/.gitconfig:
[diff]
 tool = vimdiff

選項有: vimdiff / magit / meld / kdiff3

 

Merge 的時候有時候會寫是 diff 資訊,也可以一同設定

git config --global merge.tool vimdiff

或是寫入設定檔:

vi ~/.gitconfig:
[merge]
tool = vimdiff

 

Git 指令別名(Alias)

有時候你需要輸入又臭又長的指令,像是:

git log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr)%Creset' --abbrev-commit --date=relative

不人道!可以寫入 gitconfig 就好了,之後就可以用 git lg 或是 git lol 來執行簡化過得指令。

vi ~/.gitconfig:
[alias]
  lg=log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr)%Creset' --abbrev-commit --date=relative
  lol=log --graph --decorate --pretty=oneline --abbrev-commit

 

文章出處:https://about.gitlab.com/2016/12/08/git-tips-and-tricks/

—-

作者:HaWay, Gandi.net 技術傳教士/GitLab 愛好者, 聯絡方式:haway[at]rsync.tw