Dans une tentative d'atteindre git nirvana, je passe la journée à apprendre à tirer parti du rebase pour les situations où je fusionne actuellement.
Lorsque j'exécute ce que je considère comme un flux git 101 (que je précise ci-dessous), je dois le faire push --force
lorsque je repousse mes modifications à l'origine.
Je ne suis pas le seul - je sais que c'est un terrain couvert (voir 1 , 2 , 3 , 4 , 5 ), et je comprends les raisons techniques pour lesquelles une force est nécessaire. Mon problème est le suivant: il y a beaucoup (beaucoup) d'entrées de blog chantant les louanges du rebase et comment cela a changé leur vie (voir 1 , 2 , 3 , 4 pour en énumérer quelques-uns), mais aucun d'entre eux ne mentionne ce qui push --force
fait partie de leur flux. Cependant, presque toutes les réponses aux questions de stackoverflow existantes disent des choses comme "ouais, si vous voulez rebaser, vous devez utiliser push --force
".
Compte tenu du nombre et de la religiosité des partisans du rebase, je dois croire que l'utilisation de `` push --force '' n'est pas une partie inhérente d'un flux de rebase, et que si l'on doit souvent forcer leurs poussées, ils font quelque chose de mal. .
push --force
est une mauvaise chose .
Alors, voici mon flux. De quelle manière pourrais-je obtenir les mêmes résultats sans force?
Exemple simple
Deux branches:
- v1.0 - une branche de publication, ne contient que des correctifs
- master - tout pour la prochaine version majeure.
J'ai quelques correctifs et quelques commits pour la prochaine version.
J'aimerais incorporer les correctifs dans mon master afin qu'ils ne soient pas perdus pour la prochaine version. Pré-illumination, je voudrais simplement:
git checkout master
git merge v1.0
Mais maintenant j'essaye
git checkout master
git rebase v1.0
Alors maintenant je suis ici:
Temps pour:
git push
Pas de dé.