2010-06-30 5 views
2

J'ai un projet hébergé sur github. Il existe une branche principale (branche principale) pour le code déployé en production. Les projets individuels sont ramifiés à partir de main (proj-001, proj-002 ...).git re-commit reverse commets

Ainsi, dans le cadre d'un projet/deploy ....

  • git checkout principale branche
  • git traction origine principale branche
  • git checkout -b proj-001
  • (faire quelques modifications)
  • git add.
  • git commit -a -m "quelques notes"
  • (fusion la principale branche dans ma branche de travail)
  • (faire quelques modifications plus)
  • git add.
  • git commit -a -m "quelques autres notes"

à un moment donné, le bibliothécaire tire tout le code ensemble pour un test/déploiement cycle. S'il y a un problème avec une branche particulière, il est inversé. (et la mauvaise nouvelle est qu'une fois qu'il est revenu, ramener cette branche dans la branche principale est difficile et risqué.)

Donc, ma question: quel est le meilleur et le plus simple pour transformer mes commits en une nouvelle branche? (ma tentative actuelle de "cherry-pick" a abouti à une erreur "fatale: votre fichier d'index n'est pas fusionné" que Google n'a pas pu décrire.)

MISE À JOUR: J'ai mis à jour les événements ... le bibliothécaire a fusionné par inadvertance branche principale dans ma branche de travail ... à plus d'une occasion

+0

quasi-double de http://stackoverflow.com/questions/1078146/re-doing-a-reverted-merge-in-git –

+0

qui est un bon article ... mais le mien est plus complexe. Je vais mettre à jour le post. – Richard

Répondre

2

Je souhaite vraiment que quelqu'un d'autre aurait répondu à cette question ... mais en attendant puisque j'ai une réponse et il semble fonctionner .. Je pourrais aussi bien partager

Le gros problème est que d'autres ont fusionné la branche principale dans ma branche, ce qui a rendu difficile toute sélection ou application de cerise. donne moi une co liste complète des changements que j'ai faits. Ainsi, les grandes lignes:

  • Commander mon projet
    • git checkout
  • obtenir une liste de mes changements
    • log git --pretty = oneline --committer => /tmp/changeset.txt
  • modifier le fichier et supprimer le descriptions, préfixe chaque ligne avec « git merge »
  • inverser l'ordre queue
    • -r /tmp/changeset.txt
  • puis fusionner un à la fois et de résoudre les conflits comme ils se produisent .
+2

"mais en attendant, j'ai une réponse et ça semble marcher" c'est l'esprit. puisque cela a fonctionné pour vous, pourquoi ne pas marquer la réponse comme acceptée? Je me demande si 'git rebase' offre un moyen de le faire automatiquement ... –