備忘録としていろんな記事を参考に
設定したものを記載していきます
gitconfigの読み込み順
Linux or Mac
/etc/gitconfig
~/.gitconfig か ~/.config/git/config
.git/config (リポジトリ内)
gitconfigの外部読込
[include]
path = .gitconfig.local
[user]
name = xxx xxx
email = xxx@xxx
git監視から除外したいファイルを定義
プロジェクトで個別のものなら[プロジェクト]/.gitignore
に書けばよい・・・が
vimなどの管理にて発生するようなもの(tagsなど)を除くために全体で除くよう定義したい。
かつ、$HOME/.gitignore
となると、dotfilesの管理で設定しなければいけないシンボリックリンクを増やすこととなる・・・
ということで
.gitconfigのなかに書こう!!と思い下記でやってみた
[core]
excludefiles = $XDG_CONFIG_HOME/.gitignore.global
とすると$XDG_CONFIG_HOMEを正しく読み取ってくれない・・・・
いろいろ{}付けてみたり試したが、どれも上手くいかなかった。
調べてみるとデフォルトで$XDG_CONFIG_HOME/git/ignore
を読むようになっているとのこと
nvimの管理が$XDG_CONFIG_HOMEで行うためdotfilesの管理的にもいい!!解決!!
push時のユーザー名の省略
パスワードはセキュリティ的にもやりたくない・・・ので
ユーザー名のみ記載しておきます
{cloneしたリポジトリDir}/.git/configを編集
github.com
の前にusername@
を追加する
before
[remote "origin"]
url = https://github.com/rytkmt/dotfiles.git
after
[remote "origin"]
url = https://rytkmt@github.com/rytkmt/dotfiles.git
カラー表示
それぞれ色を付けて表示させる
[color]
diff = auto
status = auto
branch = auto
logのグラフ表示
[alias]
ll = log --graph --date=format:'%y/%m/%d %H:%M:%S' --pretty=format:'\t\b\b\b%C(yellow)%h%Creset %C(cyan)%ad%Creset %C(green)%an%Creset%C(auto)%d%Creset%n\t%C(white bold)%w(80)%s%n%Creset%w(80,2,2)%b'
gitの補完
sudo find / -name git-completion.bash
見つかったものを.bashrcに記載
# gitの補完
source /usr/share/doc/git2u-core-doc-2.16.5/contrib/completion/git-completion.bash
gitのブランチ名をプロンプトに表示
PS1に \$(parse_git_branch)
を入れればok
function parse_git_branch {
git branch --no-color 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/ (\1)/'
}
function prompt {
# 色は気分で変えたいかもしれないので変す宣言しておく
local LIGHT_BLUE="\[\e[36m\]"
local PURPLE="\[\e[95m\]"
local WHITE="\[\e[0m\]"
export PS1="${LIGHT_BLUE}\w [\u]${PURPLE}\$(parse_git_branch)${WHITE} \$ "
}
prompt
WARNING: terminal is not fully functional を解消する
TERM
という環境変数に入っている値が適していないことが原因っぽい
/usr/share/terminfo/{TERMの頭文字}/
にTERMに設定されているファイルがないとエラーとなる?よう
合わせれば解消しました
xterm-256colorなのにxterm-color256って設定してた・・・しょうもないミス
文字化け対策
[core]
quotepath = false
エイリアス公開
私の設定しているエイリアスを公開しておきます
他にもいいのがあれば教えてください
[alias]
sn = "!f() { \
if [ $# -ne 1 ];\
then \
echo 'required comment message by first args';\
else \
git add -A; \
git commit -m \"$1\"; \
fi; \
}; f"
h = help
st = status -sb
cm = commit -m
amm = commit --amend -m
amc = commit --amend --no-edit
co = checkout
aa = add -A
b = branch
ba = branch -a -vv
bd = !git branch --merged | grep -v \\* | xargs -I % git branch -d %
fe = fetch -p
mf = merge FETCH_HEAD
mod = merge origin/develop -m "behind解消"
mom = merge origin/master -m "behind解消"
d = diff
ds = diff --name-status
di = diff --cached
l = log --oneline --no-merges -n 18
la = log --oneline -n 18
ls = log --oneline --no-merges -n 18 --name-status
lsa = log --oneline -n 18 --name-status
lsr = log --oneline --no-merges -n 18 --name-status --author='r_tsukamoto' origin/develop..HEAD
lsra = log --oneline -n 18 --name-status --author='r_tsukamoto' origin/develop..HEAD
ll = log --graph --date=format:'%y/%m/%d %H:%M:%S' --pretty=format:'\t\b\b\b%C(yellow)%h%Creset %C(cyan)%ad%Creset %C(green)%an%Creset%C(auto)%d%Creset%n\t%C(white bold)%w(80)%s%n%Creset%w(80,2,2)%b'
lls = log --graph --date=format:'%y/%m/%d %H:%M:%S' --pretty=format:'\t\b\b\b%C(yellow)%h%Creset %C(cyan)%ad%Creset %C(green)%an%Creset%C(auto)%d%Creset%n\t%C(white bold)%w(80)%s%n%Creset%w(80,2,2)%b' --name-status
lll = log
lf = log -p
ss = stash push -u
sss = stash show -p
ssl = stash list --pretty='%C(yellow)%gd%Creset %gs'
ssa = stash apply --index
ssd = stash drop
ssp = stash pop --index
ssb = stash branch
ig = rm --cached
uncm = reset --soft
unst = reset --mixed
unch = reset --hard
po = push origin
pob = "!f() { \
git branch --no-color 2> /dev/null | \
sed -e '/^[^*]/d' | \
sed -e 's/* // ' | \
xargs -I@ git push origin @; \
}; f"
als = !"git config --list | grep ^alias\\. | sort | sed s/^alias\\.// | sed -e 's/=/ /' | awk '{printf \"%-10s %s\",$1,c=\"\";for(i=2;i<=NF;i++) c=c $i\" \"; print c}'"
alsむっちゃ便利です、エイリアス忘れたときに確認できます
まだこれからgitを使い始める ってところなので
今後増えていくと思いますのでまた追記します