J'ai un commit xyz dans ma branche locale que je veux vérifier s'il est inclus dans un référentiel de versions distant. puis-je faire cela d'une manière simple? Je pourrais cloner le repo distant, mais j'espère un moyen plus agréable et plus rapide. git ls-remote
semblait prometteur, mais il ne m'a trouvé aucune valeur à cet égard. Merci!
Réponses
Trop de publicités?Supposons que la distance qui fait référence au dépôt distant est appelé origin
. Dans ce cas, la première mise à jour de tous vos distance de suivi des branches avec:
git fetch origin
Maintenant, vous pouvez utiliser l'utile --contains
option d' git branch
pour savoir qui de la télécommande branches contient qui s'engagent:
git branch -r --contains xyz
(L' -r
moyen d'afficher uniquement à distance-suivi des branches.) Si le commit xyz
sont contenues dans un ou plusieurs de vos distance de suivi de branches, vous verrez sortie comme:
origin/test-suite
origin/HEAD -> origin/master
origin/master
Si c'est contenue dans votre dépôt local, mais pas celui de la distance de suivi des branches, la sortie sera vide. Toutefois, si le commit n'est pas connu dans votre référentiel à tous, vous obtiendrez l'erreur malformed object name
et un message d'utilisation - peut-être un peu déroutant si vous n'êtes pas attendre...
Comme le dit Mark,
git branch -a --contains commitish
Cependant, méfiez-vous de branches qui contiennent une cerise cueillies/relocalisée/version fusionnée de le commettre.
Cela pourrait venir dans maniable
git log --cherry-pick --left-right <commitish> ^remote/branchname
Il liste les commettre SEULEMENT si il n'existe pas (comme un cherrypick) dans la branche distante. Voir la page de man pour le journal pour une explication sur comment-cherry-pick identifie équivalent s'engage
Bien sûr fusionne/rebases avec des résolutions de conflits ou de courges ne sont pas automatiquement détectés comme ceci