Git n'a pas le même concept de numéros de révision que subversion. Au lieu de cela, chaque instantané fait avec un commit est marqué par une somme de contrôle SHA1. Pourquoi ? Il y a plusieurs problèmes avec un revno en cours dans un système de contrôle de version distribué :
Tout d'abord, le développement n'étant pas du tout linéaire, l'attachement d'un nombre est un problème plutôt difficile à résoudre de manière à satisfaire votre besoin en tant que programmeur. Essayer de résoudre ce problème en ajoutant un nombre peut rapidement devenir problématique lorsque le nombre ne se comporte pas comme vous l'attendez.
Deuxièmement, les numéros de révision peuvent être générés sur différentes machines. Cela rend la synchronisation des numéros beaucoup plus difficile - d'autant plus que la connectivité est unidirectionnelle ; vous n'avez peut-être même pas accès à toutes les machines qui possèdent le référentiel.
Troisièmement, dans git, un peu à l'initiative du système OpenCM, aujourd'hui disparu, la fonction identité d'un commit (ce que le commit est) est équivalent à son nom (l'identifiant SHA). Ce site dénomination = identité Le concept est très fort. Lorsque vous êtes assis avec un nom de commit en main, il identifie également le commit d'une manière infalsifiable. Cela vous permet de vérifier tous vos commits jusqu'au premier initial pour corruption avec le git fsck
comando.
Maintenant, puisque nous avons un DAG (Directed Acyclic Graph) de révisions et que celles-ci constituent l'arbre actuel, nous avons besoin de quelques outils pour résoudre votre problème : comment distinguer les différentes versions. Tout d'abord, vous pouvez omettre une partie du hachage si un préfixe donné, 1516bd disons, identifie de façon unique votre engagement. Mais ceci est aussi plutôt artificiel. A la place, l'astuce est d'utiliser des tags et/ou des branches. Une étiquette ou une branche est une sorte de "note jaune" que vous attachez à un commit SHA1-id donné. Les tags sont, par essence, censés être immobiles alors qu'une branche se déplace lorsque de nouveaux commits sont effectués dans son HEAD. Il existe des moyens de faire référence à un commit autour d'un tag ou d'une branche, voir la page de manuel de git-rev-parse.
Habituellement, si vous avez besoin de travailler sur un morceau de code spécifique, ce morceau est en cours de changement et devrait en tant que telle être une branche avec un nom de sujet parlant. La création de nombreuses branches (20-30 par programmeur n'est pas rare, avec 4-5 branches publiées pour que d'autres puissent travailler dessus) est le secret d'un git efficace. Chaque morceau de travail devrait commencer comme une branche à part entière et être ensuite fusionné lorsqu'il est testé. Les branches non publiées peuvent être entièrement réécrites et cette partie de destruction de l'histoire est une force de git.
Lorsque le changement est accepté en master elle se fige quelque peu et devient de l'archéologie. À ce stade, vous pouvez l'étiqueter, mais le plus souvent une référence au commit particulier est faite dans un bug tracker ou un issue tracker via la somme sha1. Les balises sont généralement réservées aux changements de version et aux points de branchement des branches de maintenance (pour les anciennes versions).
0 votes
Duplicata possible de Comment obtenir le nombre de commit git ?
0 votes
Il y a un article pour l'une des solutions possibles. Cela pourrait sembler un peu lourd mais intégré dans la sortie de "git log" et ne nécessite aucune commande supplémentaire autre que "git push/pull/fetch".
0 votes
Malheureusement, l'article lié de @DmitryPavlenko est sur un domaine mort : gitsvn.x10.mx. Sans indication du sujet, il sera difficile pour quiconque de le trouver ailleurs.
0 votes
Note : plus d'abréviation nécessaire avec git describe : voir stackoverflow.com/a/41308073/6309
3 votes
Non, Laurence Gonsalves, il ne s'agit pas d'un duplicata de "comment obtenir le nombre de commit de git". - il s'agit du numéro de version, et même si le nombre de commit peut être modifié pour ressembler un peu à cela, la version du hash est très différente du nombre de commit :-)
0 votes
Les différences entre Git et SVN sont si profondes qu'essayer de comprendre Git en termes de SVN ne fonctionnera pas. Il est bien plus facile de faire comme si vous ne saviez rien du tout du contrôle de version, de lire le manuel de l'utilisateur de Git et de SVN. Livre Git à partir de zéro y PRENDRE SON TEMPS . Git est presque époustouflant.