git checkout tag, git pull échoue dans la branche
j'ai cloné un dépôt git et j'ai ensuite vérifié une étiquette:
# git checkout 2.4.33 -b my_branch
C'est OK, mais quand j'essaie d'exécuter git pull
dans ma branche, git crache cette erreur:
il n'y a pas d'information de suivi pour la branche actuelle. Merci spécifiez avec quelle branche vous voulez fusionner. Voir git-pull (1) pour details
git pull <remote> <branch>
si vous souhaitez définir des informations de suivi pour cette branche, vous pouvez 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 tranquille (c'est une étiquette de toute façon). Est quelque chose comme cela possible?
la raison pour laquelle j'ai besoin de cela est que j'ai un script automatique qui tire toujours sur le dépôt et échoue bien sûr à cause de l'erreur ci-dessus..
14 réponses
Edit: Pour les nouvelles versions de Git, --set-upstream master
a été supprimée, vous devez utiliser --set-upstream-to
au lieu de:
git branch --set-upstream-to=origin/master master
comme il l'a demandé, Vous pouvez juste 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 je l'ai corrigé avec cette commande:
$ git push -u origin master
à partir du fichier d'aide, le -u définit essentiellement la valeur par défaut pour les tirettes:
-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
revenir à la branche principale à l'aide de
$ git checkout master
et ensuite exécuter le git pull
opération
$ git pull origin/master
après, vous pouvez revenir à votre my_branch
à nouveau.
@alesko : il n'est pas possible de faire seulement git pull
après la caisse my_branch
pour mettre à jour master
branche seulement.
Parce que git pull
va aussi fusionner à la branche actuelle - > dans votre scénario à la my_branch
@Simon : cela fera aussi la poussée. pourquoi est-ce?
$ 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.
tout d'abord, assurez-vous que vous êtes sur la bonne branche.
Puis (une seule fois):
git branch --track
après que cela fonctionne à nouveau:
git pull
vous pourriez avoir plusieurs succursales. Et votre branche actuelle n'a pas réglé son amont dans remote.
étapes pour corriger ceci:
git checkout branch_name
git branch --set-upstream-to=origin/remote_branch_name local_branch_name
p.ex.
// this set upstream of local branch develop to remote branch origin/develop,
git branch --set-upstream-to=origin/develop develop
après avoir fait ceci, quand vous faites git pull
, il tirer de la branche spécifiée.
vous devez configurer votre suivi (en amont) pour la branche actuelle
git branch --set-upstream master origin/master
est déjà déprécié au lieu de celui que vous pouvez utiliser -- track flag
git branch --track master origin/master
j'aime aussi la référence doc 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 était: git branch --set-amont=origine de maître Quand j'ai tiré à nouveau, je n'ai reçu que les mises à jour du maître et l'avertissement a disparu.
si comme moi vous devez faire cela tout le temps, vous pouvez configurer un alias pour le faire automatiquement en ajoutant ce qui suit à votre .gitconfig
fichier:
[alias]
set-upstream = !git branch --set-upstream-to=origin/`git symbolic-ref --short HEAD`
quand vous voyez le message There is no tracking information...
, Lancez git set-upstream
, puis git push
à nouveau.
vous pouvez spécifier quelle branche vous voulez tirer:
git pull origin master
ou vous pouvez le configurer pour que votre branche maître locale suive la branche maître 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 dépôt (pour la branche par défaut seulement), mais si vous ajoutez une télécommande à un dépôt existant, vous devez configurer vous-même le suivi. Heureusement, le conseil donné par git fait que assez facile de se souvenir comment faire.
--set-amont est obsolète dans git 1.9.x, apparemment. Pour aller de l'avant, vous voulez utiliser quelque chose comme
git branch -u origin/master
si vous avez déjà vérifié maître. Si ce n',
git branch -u origin/master master
fonctionnera
afin de 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
. La meilleure façon de mettre à jour votre local master
serait la caisse/Fusion mentionnée dans un autre commentaire. si vous pouvez garantir que votre local master
n'a pas divergé du tronc principal que origin/master
est sur, vous pourrait utiliser git update-ref
pour mapper votre courant master
à la nouveau point, mais ce n'est probablement pas la meilleure solution pour utiliser sur une base régulière...
cette commande est dépréciée: git branch --set-upstream master origin/master
donc, en essayant de configurer le tracking, c'est la commande qui a fonctionné pour moi:
git branch --set-upstream-to=origin/master master