0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

gitを便利にしよう めも

Last updated at Posted at 2019-02-22

備忘録としていろんな記事を参考に
設定したものを記載していきます

gitconfigの読み込み順

参考

Linux or Mac

/etc/gitconfig
~/.gitconfig か ~/.config/git/config
.git/config (リポジトリ内)

gitconfigの外部読込

参考

~/.gitconfig
[include]
    path = .gitconfig.local
~/.gitconfig.local
[user]
    name = xxx xxx
    email = xxx@xxx

git監視から除外したいファイルを定義

プロジェクトで個別のものなら[プロジェクト]/.gitignore に書けばよい・・・が
vimなどの管理にて発生するようなもの(tagsなど)を除くために全体で除くよう定義したい。

かつ、$HOME/.gitignoreとなると、dotfilesの管理で設定しなければいけないシンボリックリンクを増やすこととなる・・・

ということで
.gitconfigのなかに書こう!!と思い下記でやってみた

.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

カラー表示

それぞれ色を付けて表示させる

.gitconfig
[color]
  diff = auto
  status = auto
  branch = auto

logのグラフ表示

参考1
参考2

[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'

image.png

gitの補完

参考

sudo find / -name git-completion.bash

見つかったものを.bashrcに記載

.bashrc
# gitの補完
source /usr/share/doc/git2u-core-doc-2.16.5/contrib/completion/git-completion.bash

gitのブランチ名をプロンプトに表示

参考1
参考2

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

prompt_git.PNG

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むっちゃ便利です、エイリアス忘れたときに確認できます

image.png

まだこれからgitを使い始める ってところなので
今後増えていくと思いますのでまた追記します

0
1
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?