git: vérifier si la validation xyz dans la distance repo?
J'ai un commit xyz dans ma branche locale que je veux vérifier si il est inclus dans un communiqué de distance référentiel; puis-je le faire dans certains moyen facile? J'ai pu cloner le repo distant, mais je suis en espérant un beau+de façon plus rapide. git ls-remote
semblait prometteur, mais n'a rien trouvé de valeur pour moi. Merci!
Vous devez vous connecter pour publier un commentaire.
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:Maintenant, vous pouvez utiliser l'utile
--contains
option pourgit branch
pour savoir qui de la télécommande branches contient que s'engager:(Le
-r
moyen d'afficher uniquement à distance-suivi des branches.) Si la validationxyz
est contenue dans un ou plusieurs de votre télécommande-suivi des branches, vous verrez sortie comme:Si elle 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...git for-each-ref
et de vérifier si la livraison est incluse dans chaque branche en vérifiant sigit merge-base <YOUR-COMMIT> <BRANCH>
est le même que<YOUR-COMMIT>
.Comme dit Mark,
Cependant, méfiez-vous de branches qui contiennent une cerise cueillies/relocalisée/version fusionnée de le commettre.
Cela pourrait venir dans maniable
Il liste les commettre SEULEMENT si elle 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
De cours fusionne/rebases avec des résolutions de conflits ou de courges ne sont pas automatiquement détectés comme ce
La les réponses existantes nécessitent l'ensemble du dépôt distant pour être téléchargés en local. Si la télécommande a beaucoup de commits qui ne sont pas encore cloné localement, cela pourrait prendre un temps très long. Un exemple est quelque chose comme le linux-référentiel stable, qui a plusieurs branches qui ne sont pas fusionnés. Quelqu'un suivi un noyau stable pourrait clone seule la branche pour ce noyau. Besoin de récupérer toutes les branches, pour chaque stable noyau de la série, pour voir si la livraison peut nécessiter le téléchargement de beaucoup plus de données.
Il ne semble pas être une bonne façon de le faire sans aller chercher de l'ensemble de la distance des pensions. La capacité est là, basé sur la façon dont
git fetch-pack
etgit send-pack
de travail, mais il ne semble pas être une façon de l'utiliser à la manière souhaitée.Poussant une branche à un dépôt distant ne pas télécharger engage la distance l'a déjà fait, et cela se fait sans téléchargement de l'intégralité du dépôt distant premier. En essayant de récupérer à distance commettre n'a pas besoin de télécharger l'intégralité du dépôt distant afin de déterminer si la demande de commettre existe ou pas.
Ce dernier peut être utilisé pour réaliser ce qui était demandé dans certains cas.
Si la télécommande n'a pas que de valider, puis l'échec. Le dépôt distant n'a pas besoin d'être cloné localement pour le faire. Si la télécommande ne le valider, puis il atteint il. Il n'y a aucune option de juste voir si l'extraction pourrait fonctionner, mais pas d'aller chercher quelque chose. Bien sûr, si la validation est déjà disponible localement, rien ne doit être récupérée, et ce n'est pas cher.
Certains dépôts distants ne sera pas permettre à quelque chose qui n'est pas le chef d'une branche ou une étiquette à la demande. Dans ce cas, cela ne fonctionnera pas.