2012-07-25 1 views
1

Dans notre référentiel Git nous avons quelques fusions de branches qui auraient dû être fusionnées avec --no-ff mais qui ne l'étaient pas. Ces fusions ont été faites il y a longtemps.No-FF pour les fusions depuis longtemps

Existe-t-il un moyen de forcer/insérer une validation comme si nous utilisions ces anciennes fusions avec l'argument --no-ff? L'une des versions supérieures du projet bénéficie de la vue réseau de GitHub et souhaitait pouvoir voir les différentes branches, qui sont toutes fusionnées en une seule ligne lors d'une avance rapide.

Répondre

2

Si vous ne me dérange pas d'avoir une nouvelle branche principale/maître (ou écraser l'ancienne - mais rappelez-vous, la réécriture historique publié est BAD), vous pouvez simplement recréer les fusions, si vous vous souvenez encore, quand ils étaient/auraient dû être fait:

  1. Commander le premier oublié/inexistant/manqués fusion:

    git checkout -b new_master $commit_before_merge 
    
  2. Fusionner les anciens validations. Si vous voulez des messages de fusion appropriés (y compris le nom de la branche d'origine), vous pouvez recréer temporairement l'ancienne branche ou modifier le message manuellement.

    git merge $head_commit_of_old_branch 
    
  3. Vous devrez alors utiliser cherry-pick ou rebase pour copier commits de la branche maîtresse d'origine à la nouvelle branche « Mergy ». (Écrémer avec COMMIT gammes nécessite une version récente de Git)

    git cherry-pick $commit_before_merge..$commit_before_next_merge 
    
  4. Revenir à l'étape 2 et répétez jusqu'à ce que vous êtes satisfait de l'histoire.

NB. avoir des sauvegardes et tester dans un clone local en premier.

+0

Cela va être une longue nuit. Merci! – Qix

+1

@ Di-0xide: Je ne sais pas s'il existe une version plus efficace, mais je ne connais pas une meilleure méthode – knittl

Questions connexes