Git Advent Calendar 11日目担当の @sonots です。
ちょっとした git alias ネタを紹介します。
git current-branch
git の current branch をコマンドで取得するにはこんなかんじのことをします。
$ git rev-parse --abbrev-ref HEAD
ということで ~/.gitconfig の [alias]
の下に
current-branch = rev-parse --abbrev-ref HEAD
と追記し、git current-branch
と打って使っています.
ggpull
origin リモートの current-branch を pull する alias です。
oh-my-zsh の git plugin を真似して git の alias ではなくシェルの alias にしています。.zshrc または .bashrc に、
alias ggpull='git pull --rebase origin $(git current-branch)'
ついでに、いつも fork 元のレポジトリは upstream という名前にするようにしているので、次のようにして gupull でもってこれるようにもしています。
alias gupull='git pull --rebase upstream $(git current-branch)'
git fetch-pulls
こんなかんじにすると github の pull requests を手元に持ってくることができます。
$ git fetch origin '+refs/pull/*:refs/remotes/pr/*'
ということで ~/.gitconfig の [alias]
の下に
fetch-pulls = fetch origin +refs/pull/*:refs/remotes/pull/*
と追記し、git fetch-pulls
と打って使っています.
pull request をもらった時に、その pull req ブランチを手元に持ってきて実際に走らせたりするときに使ってます。
git pull-dry-run
git pull してからコンフリクトすると嫌なので、git pull する前に変更をあらかじめ調べるにはどうしたら良い?
という話が社内IRCでちょろっと出た時に見つかった解決策です。こんなかんじでできます。
$ git fetch origin; B=$(git rev-parse --abbrev-ref HEAD); git diff --stat --summary ${B}..origin/${B}
CHANGELOG.md | 6 ++++++
README.md | 8 ++++----
2 files changed, 12 insertions(+), 4 deletions(-)
ということで ~/.gitconfig の [alias]
の下に
pull-dry-run = !"git fetch origin; B=$(git rev-parse --abbrev-ref HEAD); git diff --stat --summary ${B}..origin/${B}"
と追記し、git pull-dry-run
と打って使っています.
※ あ、(ひ)メモ にすでに書いてあった。。。まぁ、alias 化したということで。。。
おわりに
もっと改善点とか alias ネタあったらウェルカム!