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