42 votes

Git et travaillant sur plusieurs branches

J'ai un couple de branches Git: 'expérimentale', 'quelque chose' et 'master'.

Je suis passé à la "expérimentale" de la branche. J'ai remarqué un bug qui n'est pas liée à "expérimentaux" et appartient à des modifications qui ont été apportées dans "quelque chose". Comment dois-je résoudre ce problème?

Je pense que je devrait passer à "quelque chose", corriger le bug, s'engager et ensuite revenir à "expérimentale". Comment dois-je prendre du changement mineur de "quelque chose" et de l'appliquer à la fois à "maître" et "expérimental", de sorte que je n'ai pas à re-corriger le bug de nouveau quand je passe dans ces branches?

54voto

Jakub Narębski Points 87537

Il y a deux solutions ne sont pas mentionnés déjà que vous pouvez utiliser: utiliser un thème de la branche ou de l'utilisation de l'écrémage.


Sujet direction de la solution

Dans la rubrique direction de la solution, vous passez à la branche "quelque chose", de créer une branche pour corriger un bug par exemple, "quelque chose-correction', fusion de cette branche en "quelque chose" (réparer le bug), puis de fusionner cette branche en "expérimentale".

$ git checkout -b something-fix something
[edit, commit]
$ git checkout something
$ git merge something-fix
$ git checkout experimental
$ git merge something-fix
[fix conflicts if necessary and commit]

Voir aussi la Résolution des conflits/les dépendances entre un sujet de branches de début et de ne Jamais recommencer, et peut-être aussi de s'engager à une autre branche des posts de blog par Junio C Hamano (git responsable).


Cherry-picking une correction de bug.

Le cherry-picking solution est utile si vous avez remarqué plus tard que la correction que vous avez créé (par exemple sur la branche de développement) serait utile également sur l'autre branche (branche stable). Dans votre cas, vous comit un correctif sur "quelque chose" de la branche:

$ git checkout something
[edit, edit, edit]
$ git commit
$ git checkout experimental

Ensuite, vous avez remarqué que vous corriger partie prenante de "quelque chose" doit être également de la partie sur experimenta succursale. Permet de dire que cette correction a été commit 'A' (par exemple 'quelque chose' si vous n'avez pas commettre quoi que ce soit sur le dessus de 'quelque chose', mais il pourrait être par exemple "quelque chose de~2' ou 'c84fb911'):

$ git checkout experimental
$ git cherry-pick A

(vous pouvez utiliser --edit option de git cherry-pick si vous souhaitez modifier le message de validation avant comitting cerise cueillies à la correction).

5voto

Carmine Paolino Points 1805

vous pouvez:

  • stash ou commit les changements que vous avez travaillé sur l' experimental de la branche
  • checkout something
  • (facultatif) bisect trouver le bug
  • commit les changements
  • checkout experimental

et puis:

  • rebase something si vous voulez un nettoyage commettre graphique (si vous exposer ce référentiel et vous vous intéressez à ce sujet)

ou:

  • merge something si vous n'avez pas de soins sur la "présentation":)

2voto

Vitaly Kushner Points 3975

étant donné que votre branche expérimentale comporte des fonctionnalités provenant de quelque chose, vous devriez faire l’un des:

  • fusionner quelque chose dans expérimental après avoir corrigé le bogue.
  • rebassez votre expérience sur quelque chose

0voto

ondra Points 2491

Si vous ne progressez pas trop dans 'master', revenez simplement à l'expérimental et faites 'git merge master'. Si vous le faites, je pense que la commande "git cherry-pick" est votre amie.

0voto

u0b34a0f6ae Points 14874

Tes branches sont en quelque sorte liés comme ceci:

master > chose > expérimentales

C'est, si vous avez vraiment l'intention de fusionner quelque chose en maître.

Je voudrais, si possible, de le fixer sur le dessus de maître, puis rebase les autres sur le dessus du maître. Mais j'ai tout simplement comme année de référence. Ou vous pouvez y fixer et ensuite fusionner exactement comme ça

master > chose > expérimentales

mais si quelque chose est un simple sujet de la branche, je ne voudrais pas le faire. Ici, il sonne comme quelque chose qui est de votre "candidat à la prochaine master"

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X