LoginSignup
2
2

More than 5 years have passed since last update.

git diff --remote (gdr)を作ってみた。

Posted at

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の説明

gdrgit diffの中でもリモートブランチとの比較で利用するものです。
ファイル単体や特定のハッシュでの比較には向いていません。(対応する予定なし)

利用方法

gdr [ブランチ名]: 現在のローカルブランチとその名前と同じリモートブランチを比較します。
ブランチ名はremotes/origin/branch_nameかbranch_nameの指定を許可しています。
ブランチが存在していなかった場合、存在していないよとエラーになります。

余談

最近、git関連のaliasだらけになりつつある。数えてみたら30個もあった。

2
2
0

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
2
2