6 votes

Git Fusionner avec squash mais conserver le graphe du réseau

Disons que j'ai une branche développement et une branche FixBullshit et que j'ai 5 commits dans FixBullshit, je fais une pull request mais je fusionne development avec FixBullshit avec merge + squash pour le garder dans development comme 1 commit pour que ce soit plus clair (est-ce la meilleure option, d'ailleurs ?).

Le truc, c'est qu'après avoir fait ça, dans le graphe de réseau de github, on dirait que la branche Bullshit est sortie du développement, mais qu'elle n'a jamais été fusionnée et qu'il y a 1 commit dans le développement mais qu'il n'y a pas de relation avec la branche Bullshit, comme c'est le cas dans mon git. https://github.com/noxerr/VRHarry/network avec les branches development et "fixSensorsinput"

Qu'est-ce que je fais de travers ? Comment puis-je créer ce lien sur le réseau ?

10voto

rlee827 Points 952

Le graphique du réseau montre l'historique du dépôt git, et le "squashing" modifie l'historique en le comprimant.

Ce que fait Github, c'est prendre ce graphique

A--B--C--D--E
    \
     F--G--H

écrasement F--G--H en un seul commit W et en l'appliquant comme suit

A--B--C--D--E--W
    \
     F--G--H

Pour faire ce que vous suggérez, vous pourriez écraser F--G--H dans un commit Q avant de fusionner pour obtenir un graphique du type

A--B--C--D--E--I
    \         /
     Q--------

Malheureusement, cette forme de fusion de courges modifie l'historique, ce qui peut poser des problèmes à ceux qui possèdent une copie locale de l'ancien historique. C'est probablement la raison pour laquelle Github gère les fusions de la manière décrite ci-dessus, plutôt que de la manière suivante.

Il existe de nombreuses pages sur l'internet comme celui-ci sur les avantages et les inconvénients de l'écrasement, du rebasage et d'autres méthodes de fusion.

1voto

Dani Roca Points 31

Si vous le faites, vous perdrez la trace des branches, car c'est ainsi que fonctionne git.

0voto

carnicer Points 169

Je ne suis pas sûr de vous comprendre. Vous semblez vouloir à la fois écraser vos commits, mais en même temps garder vos commits de développement.

Dans ce cas, il suffit de créer une autre branche avant fusion avec la courge et ne le vérifie pas. Vous aurez alors les deux branches.

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