490 votes

Comment obtenez-vous git toujours tirer d’une branche spécifique ?

Je ne suis pas un git master, mais j'ai travaillé avec elle pendant un certain temps maintenant, avec plusieurs projets différents. Dans chaque projet, j'ai toujours git clone [repository] et à partir de ce point, on peut toujours s' git pull, tant que je n'ai pas de changements remarquables, bien sûr.

Récemment, j'ai dû revenir à une ancienne branche, et ce, avec git checkout 4f82a29. Quand j'étais de nouveau prêt à tirer, j'ai trouvé que j'ai dû mettre ma branche avec le maître. Maintenant, je ne peux pas tirer à l'aide d'une droite git pull mais au lieu de cela, ont pour spécifier git pull origin master, ce qui est gênant, et m'indique que je ne comprends pas tout ce qui se passe.

Ce qui a changé, ce qui ne me permet pas de faire une quinte git pull , sans préciser l'origine de maître, et comment puis-je le modifier?

Mise à JOUR:

-bash-3.1$ cat config
[core]
    repositoryformatversion = 0
    filemode = true
    bare = false
    logallrefupdates = true
[branch "master"]
[remote "origin"]
    url = git@github.com:user/project.git
    fetch = refs/heads/*:refs/remotes/origin/*

Mise à JOUR 2: Pour être clair, je comprends que ma méthode d'origine peut avoir été incorrect, mais j'ai besoin de fixer ce repo afin que je puisse simplement utiliser git pull de nouveau. Actuellement, la commande git pull résultats:

-bash-3.1$ git pull
You asked me to pull without telling me which branch you
want to merge with, and 'branch.master.merge' in
your configuration file does not tell me either.  Please
name which branch you want to merge on the command line and
try again (e.g. 'git pull  ').
See git-pull(1) for details on the refspec.

If you often merge with the same branch, you may want to
configure the following variables in your configuration
file:

    branch.master.remote = 
    branch.master.merge = 
    remote..url = 
    remote..fetch = 

See git-config(1) for details.

Je peux dire git pull de la branche de fusionner, et qu'il fonctionne correctement, mais git pull ne fonctionne pas comme il l'a fait à l'origine, avant que mes git checkout.

734voto

mipadi Points 135410

En vertu de l' [branch "master"], essayez d'ajouter le texte suivant à la repo Git du fichier de config (.git/config):

[branch "master"]
    remote = origin
    merge = refs/heads/master

Cela indique à Git de 2 choses:

  1. Lorsque vous êtes sur la branche master, la distance par défaut est l'origine.
  2. Lors de l'utilisation d' git pull sur la branche master, avec de la distance et de la direction spécifiée, utilisez la valeur par défaut de la télécommande (à l'origine) et de fusion dans les changements de la branche master.

Je ne sais pas pourquoi cette configuration aurait été supprimé de votre configuration. Vous pourriez avoir à suivre les suggestions d'autres personnes ont posté, trop, mais cela peut fonctionner (ou de l'aide au moins).

Si vous ne souhaitez pas modifier le fichier de config à la main, vous pouvez utiliser l'outil de ligne de commande à la place:

$ git config branch.master.remote origin
$ git config branch.master.merge refs/heads/master

140voto

Head Points 2233
<p>Si vous préférez, vous pouvez définir ces options via la ligne de commande (au lieu de modifier le fichier de configuration) comme suit :<pre><code></code></pre><p>Ou, si vous êtes comme moi et que cela soit la valeur par défaut dans l’ensemble de vos projets, y compris ceux que vous pourriez fonctionner sur l’avenir, puis ajoutez-le comme un paramètre de configuration global :</p><pre><code></code></pre></p>

86voto

Casey Points 19286
<pre><code></code><p><code></code>fichier :</p><pre><code></code></pre><p><code></code>Ensuite, il va aussi ajouter :</p><pre><code></code></pre></pre>

53voto

Luke Sampson Points 3359
<p>J’ai du mal à se rappeler exactement le <code></code> ou <code></code> arguments de mipadi et de Casey répond, donc j’utilise ces 2 commandes pour ajouter la référence en amont :<pre><code></code></pre><p>Ceci ajoutera les mêmes infos à votre .git/config, mais je trouve plus facile à retenir.</p></p>

24voto

Paul Points 12977

Git pull combine deux actions -- aller chercher de nouveaux commits sur le dépôt distant dans le suivi des branches, puis les fusionner dans votre branche.

Lorsque vous avez vérifié un particulier, valider, vous n'avez pas de actuelles de la direction générale, vous avez seulement la TÊTE pointant vers le dernier commit que vous avez fait. Donc, git pull n'ont pas tous ses paramètres spécifiés. C'est pourquoi il n'a pas de travail.

Basé sur la mise à jour de votre info, ce que vous essayez de faire est de revenir à votre télécommande repo. Si vous connaissez le commit qui a introduit le bug, la meilleure façon de gérer cela est avec git revert qui enregistre un nouveau commit qui annule la spécifié buggy commettre:

$ git checkout master
$ git reflog            #to find the SHA1 of buggy commit, say  b12345
$ git revert b12345
$ git pull
$ git push

Puisque c'est votre serveur que vous êtes désireux de changement, je vais supposer que vous n'avez pas besoin de réécrire l'histoire pour masquer le buggy s'engager.

Si le bug a été introduit dans un processus de fusion de valider, puis cette procédure ne fonctionnera pas. Voir Comment-faire-revenir-une-mauvaise-fusion.

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