"Aucune validation spécifiée et merge.defaultToUpstream non défini"

En tant que nouvel user de git, qui est un expert avec SVN et CVS, j'ai du mal à faire fonctionner les fonctions les plus basiques de git.

J'utilise un repo partagé sur assembla.com

J'ai créé un clone local et ajouté un file:

$ git clone repository-url $ echo "hello" > ha.txt $ git add -A $ git commit -a -m "haha" $ git push 

NOTE: à ce stade, j'ai reçu l'erreur «Aucune reference en commun et aucune indication de ne rien faire». Après quelques heures googling, j'ai trouvé la solution était de taper cette

 $ git push origin master 

Puis je suis allé sur un autre ordinateur, j'ai modifié le file et je l'ai validé (étonnamment, je n'avais pas besoin de faire la magie d'origine git push). Puis je suis returnné à l'ordinateur principal, je l'ai modifié à nouveau, donc j'ai pu voir comment fonctionne la fusion.

 $ git fetch $ git merge 

Maintenant, j'ai l'erreur:

fatal: Aucune validation spécifiée et merge.defaultToUpstream non défini.

En regardant la page de manuel pour "git merge", vous devez spécifier quelque chose comme ceci:

 $ git merge [< commit >..] 

Le problème est, je ne peux pas savoir ce que < commit > signifie, et ce qu'il devrait être. Par exemple, devrait-il s'agir d'un file, d'un repository, d'un message, d'une version?

Je n'ai pas créé une twig – je travaille juste sur la "tête" ou le maître comme je pense que git l'appelle

Malheureusement, google n'est pas beaucoup d'aide sur celui-ci. Les pages de manuel semblent s'attendre à ce que vous sachiez ce qu'est une < refspec > , une < commit > et une origin .

Toute aide sur ce problème noob apprécié.

Solutions Collecting From Web of ""Aucune validation spécifiée et merge.defaultToUpstream non défini""

Habituellement, vous n'appelez pas git merge sans arguments (au less, je ne connais personne qui le fait). Si vous souhaitez que cette merge défaut dans la twig de suivi, vous devez définir merge.defaultToUpstream sur true: git config merge.defaultToUpstream true . Votre twig principale doit suivre l' origin/master dans ce cas: git branch --set-upstream master origin/master . Ceci est fait automatiquement si origin/master était déjà présent lors du clonage.

Personnellement, je fais git fetch puis git merge origin/master ou git pull si je n'ai pas de commits locaux.

Edit: Comme VonC mentionné merge.defaultToUpstream défaut à true depuis Git 2.0.

Note: si votre twig master suit déjà l' origin/master (vous pouvez voir qu'avec git branch -avvv , ou un alias plus long ), alors une git merge ne s'affichera plus :

 fatal: No commit specified and merge.defaultToUpstream not set. 

Le prochain Git 2.à.x (Q3 2014) supprimera ce message d'erreur:
voir commit a01f7f2 de Felipe Contreras ( felipec ) :

merge : activer defaulttoupstream par défaut

Cela ne sert à rien:

 % git merge fatal: No commit specified and merge.defaultToUpstream not set. 

Nous soaps que le scénario le plus probable est que l'user souhaite merge l'amont, et sinon, il peut définir merge.defaultToUpstream sur false.

Cela signifie que vous n'aurez plus besoin de faire:

 git config merge.defaultToUpstream true 

Lisez Pro Git , c'est un très bon moyen de connaître Git.

Il vous dira que votre merge , faite sans twig créée et sans twig définie comme source de fusion, n'a aucun sens.

Il vous dira également la différence entre git fetch et git pull ce qui est important.

Récupérer des modifications ne déplace pas votre twig, mais le fait.

Espérons que c'est un paramètre très nécessaire après la configuration initiale de git. Définir le mappage de twig par défaut en tant qu'option globale,

git config --global merge.defaultToUpstream true