J'ai un serveur Git distant, voici le scénario que je veux réaliser :
-
Pour chaque bogue/caractéristique, je crée une branche Git différente.
-
Je continue à commiter mon code dans cette branche Git avec des messages Git non officiels.
-
Dans le dépôt supérieur, nous devons faire un commit pour un bug avec le message officiel de Git.
Donc, comment puis-je fusionner ma branche avec la branche distante de sorte qu'ils obtiennent un seul commit pour tous mes check-ins (je veux même fournir un message de commit pour cela) ?
1 votes
Je ne suis pas sûr d'avoir bien compris, mais vous pourriez vouloir une "fusion pieuvre".
1 votes
Voulez-vous garder les commits individuels sur ces autres branches ?
36 votes
J'utilise généralement git rebase -i pour regrouper tous mes commits en un seul et réécrire le message de commit. Puis je l'envoie en amont.
0 votes
Voir aussi : Que faire de la branche après la fusion
1 votes
EdwardFalk Quelle est la différence entre
git rebase -i
et la réponse (acceptée) d'abyx ?38 votes
git merge --squash
fait tout en une seule fois sur la ligne de commande et il faut juste espérer que ça marche.git rebase -i
fait apparaître un éditeur et vous permet d'affiner le rebasement. C'est plus lent, mais vous pouvez voir ce que vous faites. Il y a également des différences entre rebase et merge qui sont un peu trop complexes pour être abordées dans un commentaire.12 votes
Le problème avec toutes ces réponses est que vous devez être sur la branche principale localement et exécuter la commande merge --squash... Je veux exécuter la commande merge --squash à partir de la branche feature et non de la branche master... de sorte que lorsque j'ai terminé, je puisse pousser la branche feature vers la branche remote et soumettre un PR, est-ce possible ?
11 votes
@AlexanderMills, je pense que vous avez juste besoin d'une deuxième branche de fonctionnalité (clonée à partir de la branche maître). Faites le
merge --squash
de l'ancienne à la nouvelle branche, puis fusionner la nouvelle branche à master. L'ancienne branche devient obsolète.