.gitconfig と.gitignore について
git のalias を設定し始めて、気づいたらaliasだらけになっていたので、
現在(2011/05/12)の自分の.gitconfig の設定を晒してみる。
参考にしたページ
dotfiles
- ~/.gitconfig
[user] name = sinsoku email = sinsoku.listy@gmail.com [color] ui = auto [alias] ad = add br = branch ci = commit cia = commit --amend cih = commit --amend -C HEAD cih1 = commit --amend -c HEAD@{1} co = checkout d = diff dc = diff --cached dn = diff --name-only dw = diff --color-words ft = fetch l = log --oneline -n 20 lgraph = log --oneline --graph --decorate --all -n 20 lp = log --oneline -n 20 -p ls = log --stat -n 1 pl = pull ps = push rb = rebase rbh = rebase HEAD rbo = rebase --onto rl = reflog show -n 20 rs = reset rsh = reset --hard sh = show share = daemon --verbose --base-path=/home/sinsoku/repos/ --enable=receive-pack so = remote show origin st = status -s [push] default = tracking [core] excludesfile = ~/.gitignore
- ~/.gitignore
*.swp *.diff .venv .rvmrc .~lock.*
alias について
下記のような、使用頻度の高いコマンドは設定すると楽になると思う。
- ci = commit
- co = checkout
- d = diff
- l = log --oneline -n 20
- pl = pull
- ps = push
- st = status -s
checkout みたいな8文字のコマンドは、typeすると疲れてしまいます。
注意
alias を設定すると、他人のPC環境で「俺の知ってるgit と違う」とか
「checkout が打てない・・・だと?!」などの事態が起こります。
alias の使用は自己責任で。
alias の説明(いくつか)
説明のないalias で分からないものがあれば、git help で調べるか、グーグル先生に(ぇ
cih
commit --amend -C HEAD
git commit --amend しつつ、コミットメッセージはHEADのものを使用する。
一つ前のコミットをメッセージはそのまま、コードを少し修正するときに便利
dc
dc = diff --cached
index の変更だけのdiff を見る。
commit 前の最終確認に便利。
rb, rbh, rbo
rb = rebase rbh = rebase HEAD rbo = rebase --onto
rebase はgit の中でも分かり辛いコマンドの一つかもしれない。
ただ、使いこなせるようになると便利なコマンド。
どのブランチにいても 他のブランチを操作できるので、
慣れると、merge やcheckout、reset の回数が減ります。*1
rl
rl = reflog show -n 20
reflog はHEAD 以外(master やbranch)のログも表示できます。
これを覚えると、rebase やreset での失敗に怯えなくなります。
おまけ・gitk --all
git で作業する前に、必ず "gitk --all&" をする癖をつけておいた方がいいです。
rebase やreset で失敗しても簡単に戻せます。
gitignore
git では版管理に含めないファイルを定義するために.gitignore があるのですが、
実は3箇所で定義できます。
- ワーキングコピーの /repo/.gitignore (一般的なやつ)
- リポジトリ内の /repo/.git/info/exclude
- 自分で指定した core.excludesfile のファイル
- プロジェクトで無視したいファイルは 1. に
- プロジェクトメンバ全員が無視すべきファイル
- リポジトリ単位で無視したいファイルは2. に
- メンバ全員で共有はしないけど、全gitリポジトリで無視はしないファイル
- 自分の使用しているツールに関するファイルは3. に
- vim の*.swp など、自分が絶対にコミットしないファイル
と、私は使い分けています。