J'ai un problème, j'aime me référer à d'autres commits de l'intérieur des messages de commit, ce que je fais avec l'ID SHA, mais j'aime aussi changer un commit précédent de temps en temps . Quand je change un commit, l'ID SHA change, des idées? existe-t-il un autre moyen de se référer uniquement à un commit? merciRéférence unique d'une validation dans Git lorsque l'historique change
Répondre
Il n'existe aucun moyen automatique de résoudre ce problème. Ce que vous voulez probablement faire est de finaliser les validations à un moment donné (c'est-à-dire lorsqu'il est fusionné en master et poussé) et à ce stade, confirmer que tous les SHA1 pointent vers le bon endroit. Une façon de vérifier vous-même serait de grep commettre des messages pour SHA1 (par exemple git log --grep='[0-9a-f]{7}
), et de vérifier si SHA1 donné représente un commit qui est un ancêtre de la validation dont le message le mentionne. Vous pouvez également déclencher cette vérification à partir d'un crochet. Exactement quel hook dépend de votre workflow; Je pouvais voir des possibilités de pré-commit ou de post-fusion. Pour la vérification d'une seule validation (comme la validation préalable), vous n'avez pas besoin de grep les logs, juste le message de commit actuel. Pour une fusion, vous souhaitez grep les journaux des validations en cours de fusion.
Je pense que la seule façon est d'utiliser des étiquettes. Mais il est assez laborieux de créer un tag chaque fois que vous voulez référencer un commit.
Peut-être que l'utilisation de références relatives (comme ~5
) pourrait fonctionner, mais cela se casserait si vous supprimiez, divisiez ou écrasait les commits.
Une autre possibilité serait de référencer le SHA1 de l'arbre, pas le commit lui-même. De cette façon, si vous changez de commits, mais pas les arbres derrière eux, la référence fonctionnera toujours. Le problème avec cela est que les outils ne supportent pas cela, je pense.
Comment les étiquettes abordent-elles cela? Ils pointent vers les SHA1 de commits, donc si vous changez un commit précédent, la même chose arrive. – Cascabel
@Jefromi, tu as raison, je ne m'en suis pas rendu compte. – svick