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é.
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
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.
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
Travailler avec Git 2.3.2 ...
git branch --set-upstream-to myfork/master
Maintenant, status
, Push
et pull
sont dirigés vers myfork
remote
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
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.
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:
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'
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.
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."
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