web-dev-qa-db-fra.com

Changer le défaut 'Push to' de la télécommande Git

Je souhaite modifier la destination par défaut de la branche distante Git afin que je puisse simplement

git Push

Au lieu de:

git Push upstream

Actuellement, ceci est défini sur la télécommande d'origine et je souhaite le définir sur une autre télécommande.

J'ai essayé de supprimer la télécommande d'origine (clonée)

git remote rm Origin

Ce qui a supprimé la télécommande d'origine. Mais ne résout pas le problème git Push. Je reçois encore:

fatal: Pas de destination Push configurée. Soit vous spécifiez l'URL à partir du
en ligne de commande ou configurer un référentiel distant à l'aide de ...

J'ai aussi essayé de jouer avec:

git remote set-url --Push myfork Origin

et d’autres options mais aucune ne semble fonctionner (peut-être parce que j’ai supprimé la télécommande Origin trop tôt?)

Après le réponse ici j'ai essayé de changer:

git config Push.default upstream (or matching)

mais ni travaillé.

186
alonisser

Une autre technique que je viens de découvrir pour résoudre ce problème (même si j’avais tout d’abord supprimé Origin, ce qui semble être une erreur) consiste à manipuler directement la configuration de git:

git config remote.Origin.url url-to-my-other-remote
5
alonisser

Vous pouvez utiliser git Push -u <remote_name> <local_branch_name> pour définir la valeur par défaut en amont. Voir le documentation pour git Push pour plus de détails.

175
1615903

Pour changer la télécommande en amont qui est "connectée" à votre branche, utilisez la commande git branch avec l'indicateur de configuration en amont.

Assurez-vous que la télécommande existe en premier:

git remote -vv

Définissez la télécommande préférée pour la branche actuelle (extraite):

git branch --set-upstream-to <remote-name>

Validez que la branche est configurée avec la télécommande amont appropriée:

git branch -vv

84
Jordan McCullough

Travailler avec Git 2.3.2 ...

git branch --set-upstream-to myfork/master

Maintenant, status, Push et pull sont dirigés vers myfork remote

36
pinei

Vous pouvez facilement changer les commandes à distance par défaut pour les branches en une seule fois en utilisant cette commande

git Push -u <remote_name> --all
32
Mykola Denysyuk

Juste une précision (en utilisant la version 1.7.9.5 de git sur Ubuntu 12.04):

Git va ajouter/supprimer des télécommandes. Ce sont des instances distantes de git avec un serveur connecté.

git remote add myremote git://remoteurl

Vous pouvez ensuite récupérer le référentiel git comme suit:

git fetch myremote

Il semble que cela crée une branche appelée "myremote", mais la télécommande de la branche n'est pas définie automatiquement. Pour ce faire, vous devez procéder comme suit:

Tout d’abord, vérifiez que vous avez ce problème, c’est-à-dire.

git config -l | grep myremote

Vous devriez voir quelque chose comme:

remote.myremote.url=git://remoteurl
remote.myremote.fetch=+refs/heads/*:refs/remotes/myremote/*
branch.myremote.remote=.
branch.myremote.merge=refs/heads/master

Si vous voyez branch.myremote.remote=., procédez comme suit:

git config branch.myremote.remote myremote
git checkout myremote
git pull

Vous devez maintenant être à jour avec le référentiel distant et vos tractions/poussées doivent être liées à la télécommande appropriée. Vous pouvez commuter les télécommandes de cette manière, par branche . [Note 1]

Selon a La documentation officielle de Git Config , vous pouvez configurer une branche Push par défaut (il suffit de rechercher remote.pushdefault sur cette page), mais de garder n'oubliez pas que cela n'affectera pas les référentiels/branches existants, cela fonctionnera donc mais uniquement pour les nouveaux référentiels/branches. N'oubliez pas que --global définira les paramètres par défaut du référentiel (~/.gitconfig), --system définira les paramètres par défaut du référentiel (/ etc/gitconfig), et aucun indicateur ne définira les options de configuration pour le référentiel actuel (./.gitconfig).

En outre, il convient de noter que l'option de configuration Push.default est destinée à la configuration du comportement de la spécification de référence , pas comportement distant .

[1]: git branch --set-upstream myotherremote fonctionnerait généralement ici, mais git se plaindra de ne pas définir une branche comme étant sa propre télécommande si git branch --set-upstream myremote est utilisé. Je crois cependant que c'est un comportement incorrect.

13
smaudet

Si vous avez utilisé les commandes git Push Origin -u localBranchName:remoteBranchName et séquentiellement git Push, vous obtenez des erreurs qui, à l'origine, n'existent pas, puis procédez comme suit:

  1. git remote -v

Vérifiez s'il y a une télécommande qui ne me dérange pas. Supprimez-les avec git remote remove 'name'

  1. git config --edit

Recherchez les signes possibles d'une télécommande ancienne/inexistante. Recherchez pushdefault:

[remote]
  pushdefault = oldremote

Mettez à jour la valeur oldremote et enregistrez.

git Push devrait fonctionner maintenant.

10
Șerban Ghiță

Très simplement, et je regroupe quelques-uns des excellents commentaires ici, ainsi que mes propres recherches à ce sujet.

Commencez par vérifier la branche locale que vous souhaitez associer à votre branche distante:

git checkout mybranch

Prochain:

git branch -u Origin/mybranch

où:

git branch -u {remote name}/{branch name}

Vous devriez recevoir un message:

"Branch mybranch set up to track remote branch mybranch from Origin."
4
Artif3x

Il peut être utile de jeter un œil à .git/config à l'intérieur de votre référentiel. Il répertoriera toutes les télécommandes ainsi que la télécommande par défaut de chaque branche.

par exemple.

[core]
    repositoryformatversion = 0
    filemode = true
    bare = false
    logallrefupdates = true
[remote "Origin"]
    url = [email protected]:fii/web2016.git
    fetch = +refs/heads/*:refs/remotes/Origin/*
[branch "master"]
    remote = Origin
    merge = refs/heads/master
[branch "bugfix/#8302"]
    remote = Origin
    merge = "refs/heads/bugfix/#8302"
[branch "feature/#8331"]
    remote = Origin
    merge = "refs/heads/feature/#8331"
[remote "scm"]
    url = https://scm.xxx.be/git/web2016bs.git
    fetch = +refs/heads/*:refs/remotes/scm/*

vous pouvez apporter des modifications manuelles à ce fichier pour supprimer une télécommande indésirable, ou mettre à jour les télécommandes par défaut pour vos différentes branches

  • Faites attention! lors de la modification ou de la suppression des télécommandes, veillez à mettre à jour toutes les références dans ce fichier de configuration
2
Kim Paulissen