permet d'utiliser des identifiants valides pour les commits représentés dans votre dessin:
* topic3 (TOPIC) topic 3
|
| * topic2merge merge master onto topic
|/|
* | master3
| * topic2
* | master2
| |
| * topic1
|/
* master1
|
Si vous souhaitez supprimer la fusion commit (faire topic2
le seul parent du premier engagement après merge master onto topic
) vous devez exécuter les éléments suivants commande git rebase
:
git rebase --onto topic2 topic2merge topic3
Si la branche courante est déjà topic3
vous pouvez omettre topic3
de la commande ci-dessus (si elle est présente, la première chose qui git rebase
le fait à la caisse, si ce n'est pas la branche actuelle déjà).
Après cette opération, le graphique ressemble à ceci:
| * topic3 <-- (TOPIC) topic 3
| |
* | master3
| * topic2
* | master2
| |
| * topic1
|/
* master1
|
Les commits entre et y compris topic2merge
et topic3
sont encore présents dans le dépôt, mais ils ne sont pas plus visibles. Ils sont toujours visibles s'ils sont joignables et cela arrive s'il y a des branches qui les pointent. Même les branches éloignées.
Si vous avez déjà poussé topic3
à une prise en pension à distance, vous devez exécuter git push -f origin topic3
(remplacer origin
avec le nom de votre télécommande) et d'informer vos collègues sur le fait que vous avez changé l'histoire. Ils ont besoin de savoir cela; dans leurs dépôts topic3
a toujours topic2merge
dans son histoire et le changement que vous avez fait représente une ligne d'histoire alternative leurs repos ne prennent pas automatiquement. Ils doivent utiliser git reset --hard
ou git rebase
ou git cherry-pick
pour continuer.