2017-02-27 6 views
0

Lors de l'utilisation de git, il semble être une bonne idée de fetch et merge (comme indiqué dans ce blog) au lieu de simplement tirer pour permettre vous-même pour voir les changements avant de fusionner. Cela semble une façon raisonnable et sûre de faire les choses et je peux suivre jusqu'à présent.Tirage soigné avec Git: fusion sélective (manuelle) de l'origine/du master au master

Cependant, que se passe-t-il si je fais ensuite un git diff entre le maître et l'origine/maître et décide que la plupart des mises à jour sont bonnes, mais que certaines choses doivent être corrigées? Y a-t-il un moyen de fusionner "manuellement"? Je cherche quelque chose de similaire à l'édition que vous obtenez après un conflit de fusion qui vous permet de décider de chaque changement - un peu comme git add --patch. Ce que je veux, c'est avoir le pouvoir d'éditer les choses avant de fusionner l'origine/le master dans mon propre master, idéalement avec mon difftool préféré. Je comprends que cela pourrait être fait en appliquant les changements à master, puis force en poussant avec git push -f, mais cela semble un peu brutal et inutile.

D'autre part, cherrypick ressemble à un nom très prometteur, mais ne permet que de sélectionner les commits, pas les changements réels sur les fichiers. Comment faire une fusion hautement sélective/manuelle? Aucune des stratégies de fusion de la docs semble permettre assez de contrôle manuel pour cela.

Répondre

2

Au moment de la fusion, utilisez le paramètre --no-commit.

git merge --no-commit <branch> 

Cela arrêtera la fusion au moment de la création du commettras, en laissant votre statut de fusion en attente, ce qui est exactement le même que lorsqu'un conflit se produit. À partir de cet état, vous pouvez effectuer les modifications nécessaires et effectuer les modifications nécessaires.

+0

merci, c'était assez facile – untergam

+0

Ajout de la réinitialisation basée sur le morceau dans le cadre de la réponse acceptée –