J'ai cloné un référentiel git puis extrait une balise:
# git checkout 2.4.33 -b my_branch
C'est bon, mais lorsque j'essaie d'exécuter git pull
dans ma branche, git crache cette erreur:
Il n'y a pas d'informations de suivi pour la branche actuelle. Veuillez spécifier la branche avec laquelle vous souhaitez fusionner. Voir git-pull (1) pour plus de détails
git pull <remote> <branch>
Si vous souhaitez définir des informations de suivi pour cette branche, vous pouvez le faire avec:
git branch --set-upstream new Origin/<branch>
Je veux que git pull
ne mette à jour que la branche principale et laisse ma branche actuelle (c'est tout de même une balise). Est-ce que quelque chose comme ça est possible?
La raison pour laquelle j’ai besoin de ça, c’est que j’ai un script automatique qui git toujours dans le dépôt et échoue bien sûr à cause de l’erreur ci-dessus.
Edit: Pour les versions plus récentes de Git, --set-upstream master
est obsolète, vous devez utiliser --set-upstream-to
à la place:
git branch --set-upstream-to=Origin/master master
À l'invite, vous pouvez simplement exécuter:
git branch --set-upstream master Origin/master
Après cela, vous pouvez simplement lancer git pull
pour mettre à jour votre code.
J'ai eu le même problème et l'ai corrigé avec cette commande:
$ git Push -u Origin master
Dans le fichier d'aide, le -u définit fondamentalement la valeur par défaut pour les extractions:
-u, --set-upstream`
For every branch that is up to date or successfully pushed, add
upstream (tracking) reference, used by argument-less git-pull(1) and
other commands. For more information, see branch.<name>.merge in
git-config(1).
Essayez ces commandes:
git pull Origin master
git Push -u Origin master
Revenez à la branche principale à l'aide de
$ git checkout master
puis exécutez l'opération git pull
$ git pull Origin/master
Ensuite, vous pourrez revenir à votre my_branch
.
@ alesko : il n'est pas possible de ne faire que git pull
après le paiement my_branch
uniquement pour mettre à jour master
branche.
Parce que git pull
fusionnera également à la branche actuelle -> dans votre scénario au my_branch
@ Simon : cela fera aussi le Push. pourquoi donc?
$ git branch -u Origin/master
Branch master set up to track remote branch master from Origin.
et selon docs:
-u <upstream>
Set up <branchname>'s tracking information so <upstream> is considered
<branchname>'s upstream branch. If no <branchname> is specified,
then it defaults to the current branch.
Vous pourriez avoir plusieurs branches. Et votre branche actuelle n'a pas mis son amont en mode distant.
Étapes pour résoudre ce problème:
git checkout branch_name
git branch --set-upstream-to=Origin/remote_branch_name local_branch_name
par exemple.
// this set upstream of local branch develop to remote branch Origin/develop,
git branch --set-upstream-to=Origin/develop develop
Ensuite, lorsque vous faites git pull
, il extrait de la branche spécifiée.
Tout d’abord, assurez-vous d’être sur la bonne branche.
Alors (une fois seulement):
git branch --track
Après que cela fonctionne à nouveau:
git pull
Vous pouvez spécifier quelle branche vous voulez tirer:
git pull Origin master
Vous pouvez également le configurer de sorte que votre branche maître locale trace la branche principale de github en amont:
git branch --set-upstream-to=Origin/master master
git pull
Ce suivi de branche est configuré automatiquement pour vous lorsque vous clonez un référentiel (pour la branche par défaut uniquement), mais si vous ajoutez une télécommande à un référentiel existant, vous devez configurer vous-même le suivi. Heureusement, les conseils donnés par git rendent cela assez facile à retenir.
--set-upstream est obsolète dans git 1.9.x, apparemment. À l'avenir, vous voudriez utiliser quelque chose comme
git branch -u Origin/master
en supposant que vous avez déjà vérifié master. Sinon, git branch -u Origin/master master
fonctionnera
Essaye ça
git checkout master
git pull Origin master
Vous devez configurer votre suivi (en amont) pour la branche actuelle.
git branch --set-upstream master Origin/master
Est déjà obsolète au lieu de cela vous pouvez utiliser --track flag
git branch --track master Origin/master
J'aime aussi la référence de la documentation que @casey remarque:
-u <upstream>
Set up <branchname>'s tracking information so <upstream> is considered
<branchname>'s upstream branch. If no <branchname> is specified,
then it defaults to the current branch.
Ce qui a fonctionné pour moi a été: git branch --set-up-to-= Origin master Lorsque j'ai refait un pull, je n'ai eu que les mises à jour du maître et l'avertissement est parti.
Si, comme moi, vous devez le faire tout le temps, vous pouvez configurer un alias pour le faire automatiquement en ajoutant ce qui suit dans votre fichier .gitconfig
:
[alias]
set-upstream = !git branch --set-upstream-to=Origin/`git symbolic-ref --short HEAD`
Lorsque vous voyez le message There is no tracking information...
, exécutez simplement git set-upstream
, puis git Push
à nouveau.
Cette commande est obsolète: git branch --set-upstream master Origin/master
Ainsi, lorsque vous essayez de configurer le suivi, voici la commande qui a fonctionné pour moi:
git branch --set-upstream-to=Origin/master master
Pour simplement télécharger les mises à jour:
git fetch Origin master
Cependant, cela ne fait que mettre à jour une référence appelée Origin/master
. Le meilleur moyen de mettre à jour votre master
local serait le contrôle/fusion mentionné dans un autre commentaire. Si vous pouvez garantir que votre master
local n’a pas divergé du tronc principal sur lequel Origin/master
est allumé, vous pourriez utilise git update-ref
pour associer votre master
actuel au nouveau point, mais ce n’est probablement pas la meilleure solution à utiliser régulièrement ...