目的
色々な方の.gitconfigを参考にして.gitconfigを作ったのでGitのお勉強としてまとめます。
.gitconfig
.gitconfig
[core]
excludesfile = ~/.gitignore_global
autocrlf = false
quotepath = false
pager = less -r
editor = vim
[color]
ui = auto
[push]
default = current
[merge]
ff = false
[pull]
rebase = preserve
[alias]
l = log --date=short --pretty=format:'%C(yellow)%h %Cgreen%cd %Cblue%cn %Creset%s'
ll = log --stat --decorate=short --pretty=format:'%C(yellow)%h %Cgreen%cr %Cblue%cn%Cred%d %Creset%s %C(cyan)%b'
lg = log --graph --date=short --decorate=short --pretty=format:'%C(yellow)%h %Cgreen%cd %Cblue%cn%Cred%d %Creset%s'
lm = log --merges --pretty=format:'%C(yellow)%h %Cgreen%ci %Cblue%cn%Cred%d %Creset%s %C(cyan)%b'
b = branch
ba = branch -a
co = checkout
com = checkout master
cob = checkout -b
a = add
aa = !git add -A && git s
c = commit
cm = commit -m
cam = commit -a -m
wip = commit -m 'WIP'
amend = commit --amend -C HEAD
d = diff
dc = diff --cached
dn = diff --name-only
dw = diff --color-words
um = !git --no-pager diff --name-only --diff-filter=U
ft = fetch
ftp = fetch --prune
pl = pull
ps = push
info = remote show origin
s = status --short --branch
st = status
r = reset
rs = reset --soft
rsh = reset --soft HEAD
rh = reset --hard
rhh = reset --hard HEAD
rl = reflog show -n 20
rb = rebase
rbi = rebase -i
rbh = rebase HEAD
rbo = rebase --onto
sync = !git checkout master && git pull origin master && git fetch -p origin && git branch -d $(git branch --merged | grep -v master | grep -v '*')
ignore = "!f() { echo $1 >> \"${GIT_PREFIX}.gitignore\"; }; f"
alias = !git config --list | grep 'alias\\.' | sed 's/alias\\.\\([^=]*\\)=\\(.*\\)/\\1\\\t => \\2/' | sort
基本設定
[core]
-
excludesfile = ~/.gitignore_global
- ホームディレクトリ内に置いた
.gitignore_global
を全gitプロジェクトに反映させる
- ホームディレクトリ内に置いた
-
autocrlf = false
- 改行コードの自動変換の設定。WinとMac両方使うのでfalse
-
quotepath = false
- 日本語ファイル名を表示
-
pager = less -r
- pagerをlessに設定
-
editor = vim
- editorをvimに設定
[color]
-
ui = auto
- 色を自動設定
[push]
-
default = current
- カレントブランチと同名のリモートブランチがあればpush
[merge]
-
ff = false
- mergeは常に
--no-ff
- mergeは常に
[pull]
-
rebase = preserve
- 全ブランチで
git pull –rebase
を使う
- 全ブランチで
alias
logコマンド
-
ll = log --stat --decorate=short --pretty=format:'%C(yellow)%h %Cgreen%cr %Cblue%cn%Cred%d %Creset%s %C(cyan)%b'
- コミットの詳細ログを表示
-
lg = log --graph --date=short --decorate=short --pretty=format:'%C(yellow)%h %Cgreen%cd %Cblue%cn%Cred%d %Creset%s'
- コミットのグラフログを表示
-
lm = log --merges --pretty=format:'%C(yellow)%h %Cgreen%ci %Cblue%cn%Cred%d %Creset%s %C(cyan)%b'
- マージログを表示
branchコマンド
b = branch
-
ba = branch -a
- ローカルリポジトリとリモートリポジトリを両方表示
checkoutコマンド
co = checkout
com = checkout master
-
cob = checkout -b
- ブランチを作成してチェックアウト
addコマンド
a = add
-
aa = !git add -A && git s
- 全てのファイルをaddして簡易statusを表示
commitコマンド
c = commit
-
cm = commit -m
- コミットメッセージを指定
-
cam = commit -a -m
- コミットメッセージを指定して変更されたファイルを全てコミット
-
wip = commit -m 'WIP'
- コミットメッセージをWIPでコミット
-
amend = commit --amend -C HEAD
- コミットをHEADに追加 (すごく便利)
diffコマンド
d = diff
-
dc = diff --cached
- キャッシュとの差分を表示
-
dn = diff --name-only
- ファイル名だけ表示
-
dw = diff --color-words
- 記号やスペースで区切られた単語単位でのdiffを表示
-
um = !git --no-pager diff --name-only --diff-filter=U
- まだマージされていないファイルを表示
fetchコマンド
ft = fetch
-
ftp = fetch --prune
- リモートで削除されているリモートブランチを削除
pullコマンド
pl = pull
pushコマンド
ps = push
statusコマンド
st = status
-
s = status --short --branch
- 簡易ステータスを表示
resetコマンド
r = reset
rs = reset --soft
rsh = reset --soft HEAD
rh = reset --hard
rhh = reset --hard HEAD
reflogコマンド
-
rl = reflog show -n 20
- reflogを20行表示
rebaseコマンド
rb = rebase
rbh = rebase HEAD
-
rbi = rebase -i
- エディタでrebase
-
rbo = rebase --onto
- 第1引数に指定したコミットへ、第2引数に指定したコミットから 第3引数に指定したコミットの差分となるコミットを適用する
下の状態で
o---o---o---o---o master
\
o---o---o---o---o next
\
o---o---o topic
git rebase --onto master next topic
すると
o---o---o---o---o master
| \
| o'--o'--o' topic
\
o---o---o---o---o next
複合
-
info = remote show origin
- origin(リモートリポジトリ)の情報を表示
$ git info
* remote origin
Fetch URL: git://github.com/schacon/grit.git
Push URL: git://github.com/schacon/grit.git
HEAD branch: master
Remote branches:
gh-pages tracked
integration tracked
master tracked
Local branch configured for 'git pull':
master merges with remote master
Local ref configured for 'git push':
master pushes to master (up to date)
-
sync = !git checkout master && git pull origin master && git fetch -p origin && git branch -d $(git branch --merged | grep -v master | grep -v '*')
- 現在のmasterを最新のものにした上で過去のブランチは削除する
- remote/masterが更新されたらこれをしておけばおk
-
!git checkout master
masterにチェックアウト -
git pull origin master
origin/masterをpull -
git fetch -p origin
originで削除されているリモートブランチを削除 -
git branch -d $(git branch --merged | grep -v master | grep -v '*')
マージされたブランチを削除
-
-
ignore = "!f() { echo $1 >> \"${GIT_PREFIX}.gitignore\"; }; f"
- .gitignoreに追加
git ignore [ignoreするファイル名]
-
alias = !git config --list | grep 'alias\\.' | sed 's/alias\\.\\([^=]*\\)=\\(.*\\)/\\1\\\t => \\2/' | sort
- 登録されているaliasを表示
$ git alias
a => add
aa => !git add -A && git s
amend => commit --amend -C HEAD
b => branch
ba => branch -a
c => commit
cam => commit -a -m
cm => commit -m
co => checkout
cob => checkout -b
com => checkout master
d => diff
dc => diff --cached
dn => diff --name-only
dw => diff --color-words
ft => fetch
ftp => fetch --prune
ignore => !f() { echo $1 >> "${GIT_PREFIX}.gitignore"; }; f
info => remote show origin
...