2011-07-29 6 views
5

Nous sommes assez inexpérimentés dans l'utilisation de GIT. En fait, nous aimons l'idée des branches ;-) Mais en quelque sorte tous les Fusionne d'un utilisateur juste ne pas fermer la branche ...GIT - les branches ne se ferment pas après la fusion

Vous pouvez regarder l'image ici: http://i54.tinypic.com/297i14.png

Il y a un gris et un ligne bleue qui vient juste d'être directe ... même après la fusion ... Alors, qu'est-ce qu'il fait mal? Des indices? Je ne veux pas imaginer ce qui se passe s'il crée plus de branches et toutes persistent dans l'historique même après une fusion ...

Merci beaucoup!

+0

Donc ce que j'ai remarqué plus loin est la suivante: Inspecter les commits: – Bosh

+0

Donc ce que j'ai remarqué plus loin est la suivante: Inspecter les commits: IL YA TOUJOURS 2 ENFANTS IDENTIQUES OU PARENTS .. . comme ici (2x css): Parent: da83bd237192637ddd1824130cfafd68d8e9c352 (danse panda) Parent: f5c6663c6248dbd79002d0b9b25423cbc90e0380 (Puppie slush) enfant: 0ffa08f817ecdbe46cdffe5ae25689cb6ddcb575 (css) enfant: 0ffa08f817ecdbe46cdffe5ae25689cb6ddcb575 (css) enfant: 358034839b7f5a9f0de49b812f1f367d526b17e2 (fusion branche 'maître' en trtrtr) En fait ses commits sont les seuls qui contiennent 2 références dentitales à la fois ... Et je pense que cela n'a vraiment aucun sens. – Bosh

Répondre

3

Je ne suis pas certain de ce que vous entendez par la fermeture de la branche, mais je vais faire une supposition :)

Il est encore possible d'utiliser une branche, même après une fusion a été fait. Je suppose que c'est par conception et comment cela devrait être. Par exemple, vous pouvez continuer à travailler avec la branche même après la fusion, par exemple pour continuer à vous concentrer sur le développement dans cette branche. C'est pourquoi cela apparaît toujours dans l'image que vous avez mentionnée. Si vous ne voulez pas faire cela, il est possible de supprimer la branche après la fusion, ce qui la ferme définitivement en émettant la commande git branch -d <branch> tout en étant dans une autre branche, comme le maître. (Cela ne supprimera la branche que si sa dernière validation a été fusionnée avec la branche active, donc il n'y a aucun risque de perte de données.)

+0

Nous allons essayer de supprimer toutes les branches inutilisées aujourd'hui ... Mais si cela se produit à chaque fois, je pense que nous devrions réinstaller Eclipse et EGit sur cet ordinateur de l'utilisateur ... – Bosh

+0

Comme c'est par design, ça va se reproduire. Prenez l'habitude de supprimer la branche une fois que vous avez terminé la fusion si c'est ce que vous voulez. J'ai moi-même par exemple une branche pour tester des choses que je fusionne avec master, il n'y a jamais vraiment besoin de supprimer cette branche. D'autres exemples sont des branches séparées pour chaque développeur où ils font leur développement principal (qui fusionne ensuite avec le maître quand ils ont terminé avec une seule étape) –

15

Lorsque vous effectuez une fusion, le nouveau commit ne déplace que votre branche actuelle . Le nom de la branche pointant vers l'autre branche est laissé là où il était. En d'autres termes, si vous avez cette situation:

A---B---C blue 
\ 
    D---E---F grey 

... et faites:

git checkout blue 
git merge grey 

Vous finirez avec:

A---B---C---G blue 
\  /
    D---E---F grey 

Si vous souhaitez supprimer la grey branche, vous pouvez ensuite faire git branch -d grey. Cela n'affecte pas le graphe de validation, il suffit de supprimer la branche - ils sont comme les étiquettes qui sont déplacées autour du graphe de validation.

Cependant, si vous exploitez et créer plus commits sur les branches grey et blue, ces lignes continueront:

A---B---C---G---H---I blue 
\  /
    D---E---F---J---K---L grey 

Dans l'image que vous liez, je suppose que soit il y a d'autres livraisons plus haut la section que vous avez montrée, ou l'outil que vous utilisez présente simplement le graphique de commit étrangement.

+0

Non, il n'y a pas d'autres commits dans cette branche ... C'est la chose étrange. Directement après la fusion sans commit, les branches de cet utilisateur restent ouvertes ... – Bosh

+0

Dans ce cas, de quel outil avez-vous cette visualisation? Si vous pouvez aussi afficher les noms des branches, cela pourrait éclaircir les choses - les branches sont définies par le seul commit à leur pointe: ce commit et tous ses ancêtres sont sur la branche, et tout ce qui est au-delà n'est pas partie de la branche. –

+0

Nous utilisons Egit (Eclipse) et sa visualisation dans la section historique .... – Bosh

1

Actuellement git nécessite un processus en deux étapes pour la fusion et la fermeture d'une branche 'tâche' où la fusion indique nominalement la fermeture de la tâche et que la branche n'est plus nécessaire.

Peut-être que ce serait une option utile pour certains de pouvoir supprimer l'entrée refs/heads d'une branche pour tout fermer en une seule étape [faire une proposition à la liste git?]. Cependant, je suis sûr que de nombreux flux de travail ont des cas où ils veulent pouvoir revenir en arrière et mettre de l'ordre dans un problème mineur, qu'une suppression précoce rendrait maladroite.(bien que ce soit dans le reflog pendant un certain temps)

Donnez à l'utilisateur la tâche de créer un alias ou un script pour combiner les deux actions. Cela aidera à l'éducation tout autour ;-)

Questions connexes