2011-03-22 4 views
1

Je me demande quel est le flux de travail approprié pour les branches et tirer de maître.workflow de branche git

J'ai créé une branche et j'ai des fichiers avec des modifications. Dans le master j'ai fait quelques corrections de bugs dont j'ai besoin dans ma branche. Quand j'essaye de tirer mon IDE, je m'avertis que les changements dans ma branche seront écrasés et que je devrais m'engager en premier, mais je ne suis pas au point où je devrais m'engager.

Quel est le flux de travail approprié pour les branches avec des modifications que j'ai besoin de tirer du maître?

Répondre

3

Si vous souhaitez insérer des modifications dans un arbre "sale", vous pouvez simplement git stash et compléter votre git merge .... Une fois cela fait, vous pouvez restaurer vos modifications avec git stash pop.

+0

Donc, je dois soit valider ou stocker tous mes changements avant de tirer un coup du maître? –

+0

@Jamie Taniguchi: C'est exact, vous devez avoir un arbre de travail "propre" avant de faire une fusion. –

+0

Ah ok ça éclaircit, merci pour l'entrée, j'étais un peu confus à ce sujet. –

1

Je voudrais clarifier quelques petites choses:

  1. Première « pull » dans la terminologie git est applicable uniquement lorsque vous fusionnez des changements de branche à distance à votre succursale locale, mais pas entre vos branches locales. Dans le cas de succursales locales, il sera fusionné ou rebasé. Si vous avez une branche principale avec quelques corrections de bogues et une branche de dev dans laquelle (je parle des branches locales maintenant) vous développez une nouvelle fonctionnalité, alors il semble que la branche principale soit en amont pour votre branche dev . Par conséquent, afin de conserver l'historique en tant que ligne droite dans votre branche de développement et d'avoir une fusion rapide vers l'avant de votre branche dev dans la branche master, je recommanderais d'utiliser rebase au lieu de fusionner.

I.e. au lieu de:

git checkout dev 
git merge master 

Vous feriez

git checkout dev 
git rebase (-i) master 

argument "-i" est en option - déclenche rebasage interactif. Bien sûr, cela devrait également être exécuté sur un répertoire de travail propre. Le point est que, avec git, vous n'avez pas besoin de garder le répertoire de travail sale pendant longtemps, ne pas avoir à accumuler des changements. Vous pouvez facilement valider vos modifications sous forme de petites unités individuelles proposais à vos branches locales, puis nettoyer them'up plus tard à l'aide rebasage interactive

de git rebase docs:

On suppose l'histoire suivante existe et la branche courante est "sujet":

 A---B---C topic 
    /
D---E---F---G master 

de ce point, le résultat de l'une des commandes suivantes:

git rebase master 
git rebase master topic 

serait:

   A'--B'--C' topic 
      /
D---E---F---G master 

NOTE: Cette dernière forme est à une courte main de sujet de votre commande git suivi par git maître rebasage. Lorsque le rebasier quitte le sujet restera la branche empruntée.