git:检查是否提交远程回购xyz?

我有一个提交xyz在我的本地分支,我想检查它是否包含在一个远程版本库; 我可以用一些简单的方法做到吗? 我可以克隆远程回购,但我希望有一个更好的+更快的方式。 git ls-remote似乎很有前途,但是在那里我没有发现任何有价值的东西。 谢谢!

假设引用远程存储库的远程服务器称为origin 。 在这种情况下,首先更新所有的远程跟踪分支:

 git fetch origin 

现在你可以使用有用的--contains选项来git branch来找出哪个远程分支包含了这个提交:

 git branch -r --contains xyz 

-r表示仅显示远程跟踪分支。)如果提交xyz包含在一个或多个远程跟踪分支中,则会看到如下输出:

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

如果它包含在本地存储库中,但不包含其中一个远程跟踪分支,则输出将为空。 然而,如果这个提交在你的仓库中根本不知道你会得到错误的malformed object name错误的malformed object name和一个用法信息 – 如果你不期待它可能会有点混淆。

像马克说的那样,

  git branch -a --contains commitish 

但是,请注意包含提交的樱桃挑选/重新版本/合并版本的分支。

这可以派上用场

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

只有在远程分支中不存在(作为cherrypick)的情况下才会列出提交。 请参阅手册页以获取有关-cherry-pick如何标识等效提交的解释

当然,冲突解决或南瓜的合并/重组不能像这样自动检测