J'ai modifié 4 lignes dans un fichier et j'ai besoin d'appliquer ces modifications à une validation précédente. Cela devrait être ridiculement facile.Déplacement de 4 lignes d'un fichier vers un commit précédent transformé en cauchemar
- Je planqué le fichier
- Git rebasées retour plus haut commit
- fichier Un-planqué, puis rebasage a continué
Git signalé tout A-OK, vérifier l'historique des commits révèle git effectivement créé une fusion à 3 voies et a dupliqué tous les commits après si maintenant j'ai 2 ensembles de commits. En grattant ma tête j'ai rebasé à nouveau et git arrêté avec un conflit de fusion, j'ai corrigé le conflit de fusion et maintenant j'ai encore des commits en double mais la fusion à 3 voies a heureusement disparu.
J'ai donc rebasé à nouveau pour déplacer les doublons les uns sur les autres et les écraser mais cela s'est terminé dans un conflit de fusion. J'ai corrigé la fusion et maintenant j'ai une nouvelle fusion à 3 directions - retour à la case départ.
Je suis passé par toutes les étapes ci-dessus une fois de plus pour arriver à dupliquer les commits, mais pas de fusion à 3 voies et cette fois juste déplacé les commits en double sur le rebasage et ne pas les écraser, je les écraserais 2ème tour. Cependant, la chose vraiment étrange est qu'il a éliminé le commit entier contenant les 4 changements de ligne et je sais que j'ai pris soin de ne pas effacer la ligne du fichier todo git rebase. Donc, depuis que les 4 changements de ligne sont maintenant mystérieusement partis mais heureusement tout le reste semble bien, j'ai décidé de rebasculer et de modifier le commit et retaper dehors ces 4 changements de ligne - Bien de la pure frustration j'ai oublié d'ajouter 2 changements de ligne si seulement 2 changements ont été ajoutés mais pour rendre les choses encore plus frustrantes Il a fait une fusion sanglante à 3 reprises et a dupliqué une fois de plus tous les commits par la suite. Donc, en l'état actuel, je suis en état de rebasme pour un changement très simple d'un fichier, 2 lignes ont été ajoutées, 2 ont été ajoutées, et nous sommes de retour à une fusion à 3 voies, ce qui en fait un cauchemar .
Aussi, si elle aide tout commit est visuellement ici un ASCII arbre
* 2c935a7 (HEAD -> feature/event-system) Integrated Event System and Fine Tuned Files
* c579fde Finished Event System
| * ec6656e (origin/feature/event-system) Integrated Event System and Fine Tuned Files
| * ee51864 Finished Event System
|/
* 6fcbe87 (origin/develop, develop) Initial Assets and Files Commit
* f5015f8 Initial Libraries Commit
* 77f162a (origin/master, master) Initial Commit
Modifier
Pour répondre à certaines de vos questions les miseur, voici une ventilation beaucoup plus approfondie de tout
Pourriez-vous afficher les commandes réelles que vous avez exécutées? Et quel commit essayez-vous de changer?Et l'arbre est votre situation avant ou après le rebasage? – Schwern
'git commit -a -s -m" correctif pour la commande foo-bar "; git rebase --interactif foo_bar_hash^'. Cela peut ne pas fonctionner si 'foo_bar_hash' est un commit initial. Dans ce cas, vous devez ajouter '--root'. – 0andriy
Aussi utile serait si vous pouvez inclure ce que le changement de 4 lignes était, et quel genre de conflits vous obteniez. Sans cette info et les réponses aux questions de @ Schwern, ce post est assez flou. –