Que fait git rev-parse
-il?
J'ai lu la page de manuel mais elle a soulevé plus de questions que de réponses. Des choses comme:
Paramètres de sélection et de massage
Massage ? Qu'est-ce que ça veut dire?
J'utilise comme résolveur (vers SHA1) des spécificateurs de révision, comme
git rev-parse HEAD^
ou
git rev-parse origin/master
Est-ce le but de la commande? Sinon, est-il même correct de l'utiliser pour y parvenir?
git
git-rev-parse
talles
la source
la source
rev-parse
commande. Vous pouvez également l'utiliser pour normaliser une ligne de commande, afin que le programme réel n'ait pas à comprendre la syntaxe compliquée du nom d'objet de Git (vous utiliseriezgit rev-parse
pour modifier ou "masser" certains paramètres de la ligne de commande avant le programme actuel est appelé).git rev-parse
est ridiculement incompréhensible. Je suis surpris que personne n'ait pris la peine de réécrire ce jargon en quelque chose de lisible par l'homme, même après 5 ans.Réponses:
git rev-parse
est uneplumbing
commande auxiliaire principalement utilisée pour la manipulation.Une utilisation courante de
git rev-parse
est d'imprimer les hachages SHA1 avec un spécificateur de révision. De plus, il a diverses options pour formater cette sortie, comme--short
pour imprimer un SHA1 unique plus court.Il y a aussi d'autres cas d'utilisation (dans les scripts et autres outils construits sur git) que j'ai utilisés pour:
--verify
pour vérifier que l'objet spécifié est un objet git valide.--git-dir
pour afficher le chemin abs / relatif du.git
répertoire.--is-inside-git-dir
ou dans un arbre de travail utilisant--is-inside-work-tree
--is-bare-repository
--branches
), de balises (--tags
) et les références peuvent également être filtrées en fonction de la télécommande (à l'aide--remote
)--parse-opt
pour normaliser les arguments dans un script (un peu similaire àgetopt
) et imprimer une chaîne de sortie qui peut être utilisée aveceval
Massage
implique simplement qu'il est possible de convertir les informations d'un formulaire en un autre, c'est-à-dire une commande de transformation. Voici quelques exemples rapides auxquels je peux penser:A..B
pourgit log
ougit diff
dans les arguments équivalents pour la commande de plomberie sous-jacente commeB ^A
la source
Juste pour développer l'étymologie du nom de la commande
rev-parse
, Git utilise systématiquement le termerev
dans les commandes de plomberie comme abréviation de "révision" et signifie généralement le hachage SHA1 à 40 caractères pour une validation. Parrev-list
exemple, la commande imprime une liste de hachages de validation de 40 caractères pour une branche ou autre.Dans ce cas, le nom peut être étendu à
parse-a-commitish-to-a-full-SHA1-hash
. Bien que la commande possède les nombreuses fonctions auxiliaires mentionnées dans la réponse de Tuxdude, son homonyme semble être le cas d'utilisation de la transformation d'une référence conviviale comme un nom de branche ou un hachage abrégé en le hachage SHA1 à 40 caractères sans ambiguïté le plus utile pour de nombreux programmes / plomberie fins.Je sais que je pensais que c'était quelque chose de "reverse-parse" pendant un bon moment avant de le comprendre et j'ai eu le même problème à donner un sens aux termes "massage" et "manipulation" :)
Quoi qu'il en soit, je trouve cette notion de "parse-to-a-revision" une façon satisfaisante d'y penser, et un concept fiable pour me rappeler cette commande lorsque j'ai besoin de ce genre de chose. Souvent, dans les scripts Git, vous prenez une référence de validation conviviale comme entrée utilisateur et souhaitez généralement la résoudre en une référence de travail validée et sans ambiguïté dès que possible après l'avoir reçue. Sinon, la traduction et la validation des entrées ont tendance à proliférer dans le script.
la source
messaging
etmanipulation
comme vous y faites allusion auparavant?git rev-parse
est l'abréviation degit revision-parse
. Il prend l'entrée donnée et renvoie l'ID de révision de 40 caractères correspondant.git rev-parse
Fonctionne également pour obtenir le nom de la branche actuelle en utilisant le drapeau --abbrev-ref comme:la source
git log --format=%B -n 1 <revision>