web-dev-qa-db-fra.com

Comment ne commettre aucun changement et nouveau message?

Comment puis-je créer un nouveau commit et créer un nouveau message si aucun changement n'est apporté aux fichiers?

N'est-ce pas possible puisque le code du commit (SHA?) Sera le même?

107
d-_-b

Il y a rarement une bonne raison de le faire, mais le paramètre est --allow-empty pour les commits vides, contrairement à --allow-empty-message pour les messages vides. Vous pouvez également en lire plus en tapant git help commit ou en visitant la documentation en ligne .

Alors que l'objet arbre (qui a son propre hachage) sera identique, le commit aura en réalité un hachage différent, car il aura vraisemblablement un horodatage et un message différents, et aura certainement un commit parent différent. Ces trois facteurs sont intégrés à l'algorithme de hachage d'objet de git.


Il y a quelques raisons pour lesquelles vous pourriez vouloir un commit vide (intégrant certains des commentaires):

  • En tant que "commit déclaratif", ajouter une narration ou de la documentation (via DavidNeiss ), y compris des données après coup sur la réussite des tests ou des peluches (via Robert Balicki ).
  • Pour tester les commandes git sans générer de modifications arbitraires (via Vaelus ).
  • Pour recréer un référentiel nu supprimé à l'aide de gitolite (via Tatsh ).
  • Pour créer arbitrairement un nouveau commit, par exemple pour réactiver l'outil de construction (via mattLummus ) ou pour des raisons de journalisation personnelle ou de métriques (via DynamiteReed ). Cependant, réfléchissez-y à deux fois: en fonction de votre structure de branche/fusion, les commits peuvent durer très longtemps. Par conséquent, une stratégie "ne rien commettre" peut polluer par inadvertance le référentiel de votre équipe avec des artefacts de flux de travail temporaires et rendre difficile la séparation des révisions de code. cruft éphémère.

D'autres stratégies pour ajouter des métadonnées à une arborescence de validation incluent:

  • Séparez les branches ou les balises légères qui pointent toujours vers une validation ayant un statut particulier (par exemple, "dernière validation acceptée" ou "validation actuelle").
  • Balises annotées pour un moyen d'enregistrer l'horodatage, le committer et le message, en pointant sur une validation existante sans ajouter d'entrée dans l'arbre de validation lui-même.
  • git notes associer une note modifiable au-dessus d’un commit immuable existant.
136
Jeff Bowman

Si je vous ai bien compris, vous voulez faire un commit vierge. Dans ce cas, vous avez besoin de:

git commit --allow-empty
31
Dima

Commit vide avec un message

git commit --allow-empty -m "Empty test commit"

Commit vide avec un message vide

git commit --allow-empty --allow-empty-message
21
Adobels

Peut-être comme alternative plus raisonnable, vous pourriez créer un balise annotée (un commit nommé avec un message). Voir le git tag -a option.

2
kan

Si vous utilisez un système tel que gitversion Il est très logique de faire ce type de commit. Vous pouvez avoir un commit spécialement conçu pour remplacer la version majeure à l'aide d'un commentaire + semver: major.

2
Kevin Johnson