359 votes

Erreurs de fusion git

J'ai une branche git appelés 9-sign-in-out avec parfaitement le code de travail que je voudrais devenir le "maître" je suis actuellement sur la branche master.

$ git branch
9-sign-in-out
* master

Je suis en train de basculer en 9-sign-in-out de la branche, mais il ne m'autorise pas à:

$ git checkout 9-sign-in-out
app/helpers/application_helper.rb: needs merge
config/routes.rb: needs merge
error: you need to resolve your current index first

Une idée de comment je peut tout ignorer la branche master erreurs et tourner à la 9-sign-in-out de la branche comme le maître? Peut-être git rebase ? Ne veux pas perdre le code 9-sign-in-out. Merci!

733voto

Mark Longair Points 93104

Il vaut la peine de comprendre ce que ces messages d'erreur signifie - needs merge et error: you need to resolve your current index first indiquent qu'une opération de fusion a échoué, et qu'il y a des conflits dans ces fichiers. Si vous avez décidé que quelle que soit la fusion que vous essayiez de faire, c'était une mauvaise idée, après tout, vous pouvez remettre les choses à la normale:

git reset --merge

Cependant, sinon vous devrez résoudre les conflits de fusion, tel que décrit dans le git manuel.


Une fois que vous avez traité qu'en soit la technique que vous devriez être en mesure à la caisse de la 9-sign-in-out de la branche. Le problème avec juste de renommer votre 9-sign-in-out de master, comme il est suggéré dans wRAR la réponse est que si vous avez partagé votre ancien maître de la direction, avec n'importe qui, cela va créer des problèmes pour eux, car si l'histoire des deux branches divergentes, vous serez publication réécrit l'histoire.

Essentiellement, ce que vous voulez faire est de fusionner ton sujet branche 9-sign-in-out en master mais exactement garder les versions des fichiers dans le thème de la branche. Vous pouvez le faire avec les étapes suivantes:

# Switch to the topic branch:
git checkout 9-sign-in-out

# Create a merge commit, which looks as if it's merging in from master, but is
# actually discarding everything from the master branch and keeping everything
# from 9-sign-in-out:
git merge -s ours master

# Switch back to the master branch:
git checkout master

# Merge the topic branch into master - this should now be a fast-forward
# that leaves you with master exactly as 9-sign-in-out was:
git merge 9-sign-in-out

57voto

wRAR Points 13223
git checkout -f 9-sign-in-out # change branch, discarding all local modifications
git branch -M master # rename the current branch to master, discarding current 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