2011-12-17 7 views
1

Je suis relativement nouveau à git donc ce problème pourrait être de ma faute. Mais c'est trop fragile à mon humble avis. Tout conseil pour inverser les dommages serait apprécié.Git branche pull foiré

Voici ma configuration de branche.

Machine A (Mac): 
    master 
    couch 

Machine B (Windows): 
    master 

machine B, je suis en train de tirer les deux maîtres et les branches canapé de la machine A. Malheureusement, je ne l'ai pas oublié que je créé la branche de canapé sur la machine B encore. Voici ce que je l'ai fait sur l'origine machine B. est définie sur la machine A.

git pull origin master 
git pull origin couch 

À ma grande surprise, git fusionner automatiquement la branche de canapé en maître sur la machine B! Mon attente est que git crée une branche de canapé sur la machine B si elle n'existe pas.

Comment annuler la fusion? Je ne suis pas encore prêt à fusionner la branche de canapé en maître. Je vais tout effacer sur la machine B et cloner à nouveau à partir de la machine A. Je suis juste curieux de savoir s'il existe de meilleures solutions.

+0

Malheureusement, un manque d'expérience vous a mordu. Git a fait exactement ce que tu lui as dit de faire. @manojlds a raison de décrire ce qui s'est passé, comment cela aurait dû être fait et ce que vous pouvez faire pour le réparer. Mais si vous supprimez et reclonez, comme il l'a dit, faites simplement git checkout -b canapé origine/canapé. Cela ramènera la branche du divan dans votre référentiel local. – wadesworld

Répondre

4

git pull origin couch

va récupérer la branche canapé de la machine A et fusionner avec la branche courante , qui dans votre cas aurait été maître et c'est la raison pour laquelle vous voyez canapé fusionné en maître. Tout ce que vous aviez à faire était simple git pull puis un git checkout -b couch origin/couch

Il suffit de faire git reflog, voir où votre maître était auparavant et faire git reset --hard <sha from reflog> ou quelque chose comme git reset --hard [email protected]{2}

Ou vous pouvez faire git reset --hard ORIG_HEAD

+0

correct, je conseille également d'utiliser git pull --rebase – gvd