web-dev-qa-db-fra.com

D'où suis-je parti?

Je suis revenu sur un vieux projet et j'ai dirigé le Nice git status pour comprendre ce qui se passait et j'ai remarqué bien trop de branches! Je veux faire un peu de ménage avant de recommencer à travailler dessus mais je ne sais pas de quelle branche vient d'où ...

PAR EXEMPLE. "BranchA" dérive-t-il de "develop"? "BranchB" dérive-t-il de "master" ou "branchA" ??

Comment puis-je répondre aux exemples de questions ci-dessus?

46
Marsellus Wallace

Il n'y a pas de réponse canonique à cela, car les branches sont simplement des pointeurs vers certaines validations dans un DAG. Par exemple, master et foo peuvent pointer vers le même commit; si vous créez ensuite une branche à partir de foo, cela revient en fait à créer une branche à partir de master.

Cela dit, si vous visualisez le graphique de validation (via gitk ou un autre outil d'historique graphique), vous pouvez avoir une idée générale de l'emplacement des points de branchement dans le graphique de validation, par rapport à l'endroit où pointent divers pointeurs de branche.

20
Amber

git merge-base montre le commit qui est l'ancêtre commun de deux branches.

Utilisation simple: git merge-base <branch> <branch> montre la validation commune des deux branches.

29
patthoyts

Si vous êtes déjà sur une branche, vous pouvez obtenir le commit qui est le point où il est issu d'une autre branche, par exemple master, comme ceci:

git merge-base --fork-point master
3
Cory Klein

Si vous travaillez sur Windows ou Linux (avec GUI), installez simplement les belles extensions git. Ils peuvent vous visualiser parfaitement l'arbre de branche/fusion.

http://code.google.com/p/gitextensions/downloads/detail?name=GitExtensions207.Zip&can=4&q=

Salutations,

2
Mario Fraiß

Respectez une convention de dénomination et évitez toute confusion.

Lors de la création d'une branche à partir de master - disons, pour implémenter une fonction de messagerie - vous pouvez la nommer master_emailfeature. Ensuite, si vous devez créer une sous-branche à partir de cette branche pour implémenter ssl pour les e-mails, vous pouvez la nommer master_emailfeature_sslandtls.

Cela montre clairement quelle branche a été créée à partir de laquelle rien qu'en regardant le nom de la branche.

1
Basil Musa

Vous pouvez utiliser une visionneuse d'arborescence graphique, j'utilise gitg pour afficher les branches et les différences, bien que j'utilise la ligne de commande pour le travail réel la plupart du temps.

1
Not_a_Golfer

L'exécutable git en ligne de commande a également la possibilité d'afficher un arbre rudimentaire de branchement et de fusion, utilisez l'option --graph pour git log. Vous pouvez lui apporter toutes sortes d'améliorations avec les autres options. Essayez-les pour la taille:

le plus simple: git log --graph

Nice: git log - graphique - décorer - simplifier par décoration - couleur - en ligne - date = local

la version complète: git log --graph --decorate --simplify-by-decoration --color --oneline --date = local --pretty = format: '% C (auto)% h% d% C (reset )% s (% C (cyan)% ad% ae% C (réinitialisation)) '

0
Walt Howard

Si vous souhaitez déterminer de quelle branche distante votre branche locale est dérivée, cette commande peut vous éclairer.

git remote show Origin

Faites défiler vers le bas jusqu'à ce que vous voyez "Branches locales configurées pour 'git pull':" et en dessous, une liste de toutes vos branches locales s'affiche et la branche distante fusionnera avec chacune.

0
Jake Levsen