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如何标识等效提交的解释
当然,冲突解决或南瓜的合并/重组不能像这样自动检测