git: check if commit xyz in remote repo?

Like Mark said,

 git branch -a --contains commitish

However, beware for branches that contain a cherry-picked/rebased/merged version of the commit.

This could come in handy

 git log --cherry-pick --left-right <commitish> ^remote/branchname

It will list the commit ONLY if it doesn't exist (as a cherrypick) in the remote branch. See the man page for log for an explanation on how --cherry-pick identifies equivalent commits

Of course merges/rebases with conflict resolutions or squashes cannot be automatically detected like this


Let's suppose that the remote that refers to the remote repository is called origin. In that case, first update all your remote-tracking branches with:

git fetch origin

Now you can use the useful --contains option to git branch to find out which of the remote branches contains that commit:

git branch -r --contains xyz

(The -r means to only show remote-tracking branches.) If the commit xyz is contained in one or more of your remote-tracking branches, you'll see output like:

  origin/test-suite
  origin/HEAD -> origin/master
  origin/master

If it's contained in your local repository, but not one of the remote-tracking branches, the output will be empty. However, if that commit isn't known in your repository at all, you'll get the error malformed object name and a usage message - perhaps a bit confusing if you're not expecting it...

Tags:

Git