Raisons pour ne pas travailler sur la branche master du dépôt Git
Donc, je suis assez nouveau à git et j'ai après un peu de lecture au cours des deux dernières semaines, j'ai lu un peu les gens en disant que la branche master ne devrait pas être changé, mais plutôt des branches à partir et ensuite fusionnées pour.
Je suis assez heureux de travailler avec les branches, mais je me demandais pour les raisons de ne pas travailler sur la branche master?
Vous devez vous connecter pour publier un commentaire.
je suppose que l'habitude du raisonnement, c'est que la branche master devrait représenter la plus "stable" de l'histoire de votre code. utiliser les branches d'expérimenter avec de nouvelles fonctionnalités, de les mettre en œuvre, et quand ils ont suffisamment mûri, vous pouvez les fusionner en arrière à maîtriser.
de cette façon, le code maître sera presque toujours sans problèmes, et peut être surtout utilisé directement pour les rejets.
prenons git.git (le dépôt git officiel) comme un exemple. il existe plusieurs branches, plus notable:
donc,
master
contient le code qui est très susceptible de se retrouver dans la prochaine version de git.next
contient testé le code, qui pourra éventuellement être fusionnés dans lemaster
branche.pu
(propositions de mises à jour, iirc) contient assez nouveau (et probablement) du code non testé.pu
est considéré comme instable et seront remis à zéro et relocalisée à junio goût.next
pourrait obtenir de réinitialisation après une libération ou au cours d'un cycle de publication, mais c'est moins fréquent.master
est gravé dans la pierre et n'a jamais changé après qu'il a été poussé et mis à la disposition du public.voyez-vous, que les changements seront fusionnées à partir de
pu
ànext
et denext
àmaster
si elles sont jugées dignes et ne pas casser des trucs.la branche
maint
est utilisé pour faire des corrections de bugs qui devraient également s'appliquer à d'anciennes versions de git.maint
est généralement fusionné pournext
et/oumaster
.vous pouvez consulter le branches sur http://git.kernel.org/?p=git/git.git;a=sommaire
trunk
. ils sont très similaires, mais avec git (et tous les autres vcs distribués) il y a beaucoup demaster
branches (tous clonés référentiel a un), l'arbre metaphore ne fait pas beaucoup de sens plusD'autres personnes ont fait de très bonnes affaires pour ne pas faire les modifications directement dans
master
, et je suis d'accord avec eux. Cependant, toujours en préconisant des flux de travail, comme cela a parfois conduit les gens à nouveau git à croire qu'il est inutilement complexe, donc je voulais offrir un contrepoint.Si vous avez une seule personne ou d'une très petite équipe et votre développement est très linéaire, c'est à dire il est rare de travailler sur plus d'une chose à la fois et chaque caractéristique est généralement terminé avant de commencer la prochaine, il n'y a vraiment peu ou pas d'avantages à ne pas travailler directement sur les
master
. Il est très facile de revenir en arrière et ajouter une branche à tout moment en cas de nécessité. Je recommande fortement d'être au courant de la branche de fonctionnalité de flux de travail, mais si vous vous sentez dans votre cas, c'est juste l'ajout d'étapes supplémentaires sans avoir à acheter quoi que ce soit, je vous promets de ne pas dire à git de la police.La seule chose que vous devez considérer avec un DVCS (Distributed Version Control System) comme Git ou Mercurial, c'est la "publication" de flux de travail (orthogonale à la ramification de flux de travail).
Lorsque vous avez seulement les branches, vous demandez-vous à quoi effort de développement qu'ils représentent.
Si
master
est censé représenter code stable, comme knittl détails dans sa réponse, alors oui, vous avez besoin de la direction générale de fusion et demaster
.Mais quand vous pouvez cloner/pousser/tirer (c'est-à publier à différentes repos, ce qui peut avoir différentes fins en eux-mêmes), puis "
master
" peut jouer un rôle différent de celui des pensions de pensions.master
habituellement représentant le plus stable de code.master
, et certains correctifs de maintenance de la branche urgent de bugs.master
branche, réécrite à partir de pousser pousser juste pour exécuter une analyse statique de code par un crochet qui surveille ditmaster
branche pour que le test des pensions.Lors s'engage sur les deux côtés-ce qui signifie que sur votre dépôt local et en amont, par exemple en provenance d'autres membres de l'équipe, il peut arriver que s'engage un conflit. Cela signifie que les fichiers et, en particulier, les lignes ont été édités par les deux. Dans ce cas, certaines fusion manuelle de la manipulation est nécessaire.
La
master
de la branche est d'avoir une branche locale, représentant en amont lorsque vous ne pouvez pas accéder à l'amont (utilisation mobile ou une défaillance du réseau). Il est beaucoup plus facile à faire fusionner la résolution et d'autres choses quand avoir une branche locale représentant les changements en amont.master
et quelque chose d'autre. Mais Wilburt exclicitly demandé pourquoi avoir unmaster
qui n'est pas du tout changé, mais seulement utilisé pour la fusion. Quand j'ai appris Git m'a dit de laissermaster
intacte et cela a fonctionné assez bien. Avec plus d'expérience, par exemple en fusionnant l'on peut enregistrer qu'une partie.Ne sais pas si ma compréhension est correcte, je suis nouveau sur le git.
Je pense que cela rend la vie plus facile quand vous avez plusieurs fonctionnalités.Disons que vous avez un projet, et le travail sur la fonction de A, puis, plus tard vous mettre en œuvre la fonctionnalité de B.
Maintenant, il peut arriver, que vous décidez que la fonction entière a été une erreur, et que vous voulez avoir une version de votre projet avec seulement la caractéristique B, mais sans A.
Si tout est sur le master, cette tâche est délicate.
Si chaque fonctionnalité est sur sa propre branche, alors la tâche est facile:
Vous enlevez l'ancienne version de base (sans l'Un et sans B).
La fusion de la branche B.
Fait.