StackOverFlowにすでに載っていたネタ投稿で一ヶ月一回の更新終了なんて寂しいので、もう一個ネタ投稿。
以前push漏れ防止策を作ってみたでlogだけ見るくらいなら、コミットされていない編集全部見れるようにしたらいいじゃない。と思ったので、急いで作ってみた。
.bashrc/.zshrc
alias g='git'
alias gd='g diff'
alias gdc='g diff --cached'
alias gdrm='gdr remotes/origin/master'
alias gdrd='gdr remotes/origin/develop'
function gdr() {
# 引数取得
_remotes="$1"
# 引数がない場合は、今のブランチのリモートを比較対象とする
if [ "${_remotes}" = "" ]; then
_remotes="remotes/origin/"`gbn`
else
# remotes/originがついていなかった場合、remotes/origin/を付与する。
if [[ "${_remotes}" != remotes/origin* ]]; then
_remotes="remotes/origin/"${_remotes}
fi
fi
# ブランチの存在確認
_hash="`git rev-parse --verify -q ${_remotes} 2>/dev/null`"
if [ "$?" = "0" ]; then
# git diffをここで行う
git diff ${_hash}
else
echo "${_remotes} does not exist"
return 1
fi
}
aliasの概要
git add前での比較
gd
: git diffのalias。
git add後〜git commit前
gdc
: git diff --cachedのalias
git commit後〜git push前
gdr
: 下に詳細記載
gdrd
: リモートのdevelopブランチとの比較する時に使う。
gdrm
: リモートのmasterブランチとの比較する時に使う。
gdrの説明
gdr
はgit diff
の中でもリモートブランチとの比較で利用するものです。
ファイル単体や特定のハッシュでの比較には向いていません。(対応する予定なし)
利用方法
gdr [ブランチ名]
: 現在のローカルブランチとその名前と同じリモートブランチを比較します。
ブランチ名はremotes/origin/branch_nameかbranch_nameの指定を許可しています。
ブランチが存在していなかった場合、存在していないよとエラーになります。
余談
最近、git関連のaliasだらけになりつつある。数えてみたら30個もあった。