web-dev-qa-db-fra.com

Erreur de publication de la branche principale vers GitHub à partir de VS.NET

J'utilise VS.NET 2013 avec les outils Git intégrés et j'essaie de publier ma branche master dans un référentiel existant que j'ai configuré sur GitHub. J'utilise exclusivement les outils VS.NET dans IDE et j'aimerais que toutes les réponses à suivre à l'aide de ces outils si possible soient comparées à une ligne de commande.

Toutes mes modifications ont été validées localement et il me suffit de publier la branche sur GitHub. Toutefois, lorsque j'essaie de publier ma branche master locale, le message d'erreur suivant s'affiche:

Vous ne pouvez pas publier le maître de branche local dans le référentiel distant Origin car une branche avec le même nom existe déjà là-bas. Tu pourrais voulez renommer votre branche locale et réessayer.

Je sais qu'il existe un long article dans ce ici , mais j'essaie d'y remédier de VS.NET ou en ligne sur GutHub directement si possible. Au mieux, je veux mieux comprendre le problème.

Je suis presque certain que ce problème a été causé par le choix de l'option Initialize this repository with a README sur GitHub au lieu de créer un référentiel vide dans lequel mes modifications locales pourraient être appliquées. Je pense que GutHub a déjà utilisé le même nom de branche et cela provoque un conflit.

Je suppose que je pourrais supprimer le référentiel sur GitHub et recommencer à zéro, mais espérais que cela serait réglé soit de VS.NET, soit de GitHub. Est-ce que quelqu'un sait comment faire pour que ma branche master puisse être publiée avec succès?

22
atconway

Comme je venais de créer le référentiel et qu'il n'y avait aucun utilisateur, la solution consistait à supprimer le référentiel de Github (sous le menu 'Paramètres') et à le recréer (une fois supprimé, je pouvais utiliser le même nom). L'astuce consiste à non initialiser le référentiel à partir de GitHub - autoriser VS.NET à le faire lors de la 1ère synchronisation. Maintenant, cela fonctionne à merveille à partir de VS.NET.

Si j not n effaçais le référentiel, je devais utiliser des outils externes pour renommer le référentiel local ou utiliser la synchronisation depuis un autre outil (comme TortoiseGit) permettant de forcer le remplacement de la branche synchronisée. Il ne semblait pas que rien dans la version native de VS.NET permette que cela se produise.

35
atconway

Il y a un correctif pour ceci:

Accédez à l'invite de commande et accédez au répertoire de votre solution. À partir de là, vous devriez pouvoir exécuter les commandes git. Vous devrez peut-être installer git si vous n'avez pas encore Exécutez 'git pull Origin master'. Cela devrait fusionner votre dépôt GitHub avec votre dépôt local. C'est tout ce que nous devons faire à partir de l'invite de commande. Revenons maintenant à Visual Studio. 

Vous pouvez avoir des conflits, sinon vous devrez les résoudre et vous engager à nouveau localement. Visual Studio vous dira s'il y a des conflits. Une fois les conflits résolus, cliquez sur le lien "maître" situé en haut du volet. Il devrait vous donner un menu déroulant avec un élément appelé «gérer les branches». Cliquez dessus. Vous devriez voir une branche appelée "maître" sous le titre "Branches non publiées" Cliquez avec le bouton droit de la souris sur maître et cliquez sur "Publier une branche" Vous pouvez maintenant cliquer à nouveau sur le lien "modifications non synchronisées". vous verrez que le bouton 'Sync' n'est plus grisé Cliquez sur Sync et vous avez terminé!

Source et crédit: http://zanemayo.com/using_git_and_github_with_visual_studio.html

17
Darky711

VS 2013 initialisera le référentiel GIT lors de votre première validation avec sync. La solution simple consiste donc à supprimer le référentiel GIT et à le recréer sans option d'initialisation.

 enter image description here

3
marvelTracker

J'ai rencontré ce problème dans Visual Studio 2015 et voici comment j'ai résolu le problème.

  1. Connectez-vous à votre référentiel git local
  2. Branche ouverte
  3. Clic droit sur la branche maître
  4. Sélectionnez Ouvrir l'invite de commande
  5. Run git pull Origin master (Cette commande extraira les modifications de la branche principale distante d’origine et les fusionnera dans la branche extraite locale.)
  6. Publiez votre référentiel.
1
Frank Odoom

Je sais que ce fil est ancien, mais que ce qui suit a fonctionné pour moi: Fusionner la branche de suivi à distance 'refs/remotes/Origin/master'

Dans VS, accédez à Team Explorer> Branches; puis dites à VS de fusionner votre branche distante sur le maître.

Cela semble avoir fonctionné pour moi. Pas besoin de supprimer quoi que ce soit, pas besoin d'utiliser une console ... nous sommes des développeurs, nous n'aimons pas les consoles ... et pas besoin de téléchargements tiers (même si certains sont sympas, faciles à utiliser) utilisation.)

1
Mike_Matthews_II

La solution pour moi était assez simple:

Ouvrez Git Bash dans le répertoire source.

exécuter:

git Push Origin -f

Cela a résolu le problème.

Pour une raison quelconque, mon VS2013 ne crée pas réellement de référentiel git lorsque vous cochez la case Créer un référentiel. Je dois donc créer le référentiel manuellement.

Ce problème temporairement ennuyant est résolu par 

git init
git remote add Origin https://(bitbucket username)@bitbucket.org/(bitbucket project name)/(bitbucket repository name).git
git add .
git Push Origin -f

Je sais que cela est contraire à la méthodologie de base consistant à vouloir utiliser uniquement l'interface Visual Studio, mais il existe un problème avec VS2013 et cette solution de contournement est pour moi.

0
Timothy Dooling