Qu'est-ce qu'une branche de sujet git?

137

Qu'est-ce qu'une branche de sujet git? Cela diffère-t-il d'une branche ordinaire d'une manière ou d'une autre? Y a-t-il des branches qui ne sont pas des branches thématiques?

sauter
la source

Réponses:

114

Les branches de rubrique sont généralement des branches légères que vous créez localement et dont le nom est significatif pour vous . C'est là que vous pouvez travailler pour un correctif de bogue ou une fonctionnalité (ils sont également appelés branches de fonctionnalités) qui devraient prendre un certain temps.

Un autre type de branche est la "branche distante" ou "branche de suivi à distance". Ce type de branche suit le développement du travail de quelqu'un d' autre et est stocké dans votre propre référentiel. Vous mettez régulièrement à jour cette branche (en utilisant git fetch) pour suivre ce qui se passe ailleurs. Lorsque vous êtes prêt à rattraper les changements de tout le monde, vous utiliserez git pullà la fois pour récupérer et fusionner.

J'ai également vu un autre type de branche qui est essentiellement une arborescence de fichiers complètement séparée dans le même référentiel. Par exemple, le référentiel Git lui - même contient des têtes nommées man et html qui contiennent un contenu entièrement différent de la branche master . Je ne sais pas comment ces types de branches sont généralement appelés.

Greg Hewgill
la source
6
Je cherchais comment avoir deux branches sans commettre un ancêtre commun et j'ai
Nicolas
1
Wrt l'arbre séparé, je crois qu'ils sont parfois appelés une branche orpheline, de la même manière que Github vous recommande de créer une page github manuellement
max
1
Pourquoi dites-vous qu'une branche thématique doit être locale? Il n'y a aucune raison de penser que vous pourriez ne pas vouloir pousser une branche de sujet. Et, de même, d'autres développeurs peuvent créer leurs propres branches de sujet et vous voudrez peut-être les extraire. Cette réponse semble confondre deux propriétés totalement indépendantes des branches: le fait qu'une branche soit locale ou non n'est pas du tout liée au fait qu'il s'agisse d'une branche thématique.
Jean-Paul Calderone
@ Jean-PaulCalderone: Je ne pense pas avoir dit branches sujet doivent être locaux. Vous pouvez bien sûr suivre à distance une branche de sujet, s'il y a plus d'un développeur qui y travaille.
Greg Hewgill
2
Je pense que la réponse l'implique. Pourquoi est-ce que "... que vous créez localement ..." et "... ont un nom qui est significatif pour vous." une partie intrinsèque de ce qui constitue une «branche thématique»? La première phrase de votre réponse suggère fortement que ce sont des caractéristiques importantes d'une branche thématique, mais qu'elles sont en fait toutes les deux orthogonales à la «thématique» d'une branche ou non. Le paragraphe suivant dans lequel vous décrivez les «branches distantes» renforce l'idée que la partie «créée localement» d'une branche de rubrique est importante. Je suggère de recentrer cette réponse pour désaccentuer ces traits de branche non liés.
Jean-Paul Calderone
81

Ce n'est pas un terme technique; il fait simplement référence à une branche créée pour implémenter une fonctionnalité spécifique ou corriger un bogue. Le «sujet» est la raison de la création de la branche, essentiellement.

mipadi
la source
2
oui. par opposition à une branche personnelle, où vous avez des branches: bob, alice, mat, etc.
webmat
... donc la branche de sujet et la branche de fonctionnalité sont les mêmes choses, n'est-ce pas?
Betlista le
@Betlista Plus ou moins, oui.
mipadi le
28

https://github.com/dchelimsky/rspec/wiki/Topic-Branches explique bien cela:

Une branche «sujet» est une branche distincte que vous utilisez lorsque vous travaillez sur un seul «sujet» (un correctif de bogue, une nouvelle fonctionnalité ou une idée expérimentale). Il est recommandé de travailler sur une branche de sujet plutôt que directement au-dessus de «maître» car:

{... visiter le lien ...}

Donc, pour toutes ces raisons, il est recommandé d'utiliser une branche de rubrique pour préparer les soumissions, même pour de simples contributions telles que les corrections de bogues à commit unique, etc.

Cet exemple donne également des exemples. Ce qui m'a fait réfléchir, c'est probablement ce que font déjà la plupart des magasins. Tous les projets agiles auxquels j'ai participé le font. J'ai voté pour «Ce n'est pas un terme technique» parce que je sens que cela touche le clou sur la tête.

Jeff Ancel
la source
4

il semble que le type le plus important et le plus important de branches qui ne sont pas des branches de sujet serait des branches de publication sur un référentiel majeur et accessible au public, n'est-ce pas?

C'est probablement bon pour vous, mais c'est à propos de vous et du projet auquel vous pensez; ce n'est pas déterminé par Git.

La plupart des systèmes de contrôle de version (en particulier ceux centralisés) prescrivent ou appliquent un flux de travail particulier, y compris ce pour quoi il est logique d'utiliser une branche. Git (et dans une certaine mesure la plupart des VCS distribués) considèrent que le flux de travail, à quelles branches sont utilisées, quand valider, à quoi les différents dépôts sont utilisés, etc. sont tous choisis par les utilisateurs et les accords entre les utilisateurs (politiques). Donc Git ne les applique pas techniquement.

C'est l'une des choses qui ont rendu Git difficile à apprendre pour moi. Oliver Steele a expliqué cela du point de vue de l'utilisateur, en écrivant sur les politiques de validation .

Paul
la source