Gitでリモートブランチとローカルブランチの差分を表示する

まず、リモートブランチを最新に更新しておく。

$ git fetch
$ git svn fetch  # git-svnでSubversionレポジトリをリモートリポジトリに持つ場合

リモートブランチを確認。

$ git branch -a
* master
  remotes/origin/master
  remotes/svn/tags/RELEASE_20101022
  remotes/svn/tags/RELEASE_20101025
  remotes/svn/trunk

現在のローカルブランチとリモートブランチの差分を表示。

$ git diff remotes/origin/master

現在のローカルブランチとリモートブランチの差分を表示(簡易表示)

$ git diff --name-status remotes/origin/master

現在のローカルブランチとリモートブランチの差分を表示(簡易表示、Subversionレポジトリ)

$ git diff --name-status remotes/svn/trunk

情報源: git svn status - showing changes that are not committed to svn - Stack Overflow

Redmineでレポジトリをgitと連携した場合のエラー

Redmineでレポジトリをgitと同期するため、cronでRepository.fetch_changesetsをscript/runnerで実行したら、
git: not found
となって同期できなかった。
redmine/lib/redmine/scm/adapters/git_adapter.rbを

#GIT_BIN = "git"
GIT_BIN = "/usr/local/bin/git"

のようにgitへのパスを設定するようにしたら解決。(※)

RedmineとGitの連携で「リポジトリに、エントリ/リビジョンが存在しません」と出た時の対処法 « Sinner The Sinner

※ r4795, r4797で、configuration.ymlにscm_git_commandを設定できるようになったので、上記修正は不要になった。

その他に、gitレポジトリのディレクトリ(xxxx.git)へアクセス権がない場合、Redmineで連携したレポジトリを見ると、「リポジトリに、エントリ/リビジョンが存在しません」となってしまう。
その場合は、

$ sudo chmod o+rx xxxx.git
  • gitosisやgitoliteでgitユーザのホームディレクトリにレポジトリがある場合は、gitユーザーのホームディレクトリもo+rxしておく。