54 votes

fréquence de commit git

Depuis que je suis passé de svn à git, j'ai commencé à faire plus de validations chaque fois que je recompilais et que mes tests réussissent, je commettais mon travail. En fin de compte, je finis par commettre fonction par fonction.

Je surveille également d'autres projets utilisant git comme emacs, wordpress, etc. Je vois qu'ils ne s'engagent pas si souvent. Je me demande donc comment vous engagez-vous alors?

64voto

Scott Chacon Points 2070

La ligne directrice pour le Git du projet lui-même (et le projet Linux, autant que je sache) est un commit par "logiquement distinct de l'ensemble de modifications".

Cela est un peu ambigu, mais vous ne voulez probablement pas à commettre tous les quelques jours si vous travaillez sur un projet en permanence, et vous avez probablement ne veulent pas s'engager après chaque modification de la fonction - si vous avez modifié plusieurs fonctions dans plusieurs fichiers différents, vous souhaitez vous engager toutes les fonctionnalités liées ensemble, si vous le pouvez et fournir un message de commit. Tout le code modifié dans chaque commit doit être lié, mais il peut (et devrait) être certainement dans plusieurs fichiers.

Ce que vous voulez probablement à garder à l'esprit est dans des revues de code. Si quelqu'un est en train de décider si elles doivent fusionner votre travail, il est beaucoup plus facile pour eux de traiter le travail présenté si vous avez chaque commit logiquement contenus et séparés les uns des autres. Qui vous permet de vous (ou d'autres) cherry pick travailler efficacement - si vous avez trois s'engage avec une fonction modifiée en chacun, mais ils sont tous couplés en quelque sorte - vous ne pouvez pas appliquer l'un sans l'autre deux sans casser le code de base - elles doivent probablement être écrasé vers le bas à un commit.

26voto

kwatford Points 11658

Je surveille également d'autres projets utilisant git comme emacs, wordpress, etc. Je vois qu'ils ne s'engagent pas si souvent.

Une des choses intéressantes à propos de git est que vous pouvez commettre aussi souvent que vous le souhaitez, puis lorsque vous souhaitez effectuer un commit en amont, vous pouvez regrouper plusieurs commits liés dans un même commit propre en utilisant git-rebase .

13voto

VonC Points 414372

En fin de compte j'arrive à la fin de commettre fonction par fonction

N'oubliez pas que vous pourrait plutôt "git add" de la fonction par fonction, faire un seul commit:

  • une fois que toutes les fonctions sont écrites ou fixes pour une tâche donnée
  • ou une fois que vous vous rendez compte de la fonction actuelle est trop grande/trop compliqué à faire partie d'un commit du temps: vous pouvez ensuite valider ce qui est actuellement "sur scène" ("git ajoutée"), ce qui ne serait pas inclure vos modifications en cours dans le répertoire de travail.

Ensuite, le nombre de validations peuvent être liés à l'objet de la branche:

  • la section locale: fou, commettre quand vous le voulez
  • "public" de la branche (celui que vous allez pousser):
    • pour un référentiel local (pour un groupe sélectionné de personnes): on peut les regrouper au moins la très petite taille "intermédiaire" s'engage
    • pour un dépôt public (pour tous les développeurs, ou d'autres projets pour les voir): vous pouvez faire un rebase interactif afin de regrouper vos commettre par "activité" ou "tâche" dans le but de les rendre plus lisibles.

En bref, la "publication " considérations peuvent, dans un DVCS (comme dans "Distribué"), de vous guider pour faire le bon nombre de validations pour les bonnes raisons.

10voto

baudtack Points 8259

Le plus vous vous engagez, plus il est facile de trouver des bugs avec git traversent,

7voto

Alan Haggai Alavi Points 34260

Dès que les tests passent, ou lorsqu'une unité de fonctionnalité est ajouté/supprimé/modifié.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X