34 votes

Comment configurer git pour éviter une poussée accidentelle de git

Après un git clone, la config dans le nouveau repo ressemble:

remote.origin.url=<some url>
remote.origin.fetch=+refs/heads/*:refs/remotes/origin/*
branch.master.remote=origin
branch.master.merge=refs/heads/master

Ensuite, je peux exécuter la commande "git pull" et "git push". Mais je suis intéressé par seulement "git pull", parce que je veux aller dans un autre repo.

Une chose que je peux faire c'est:

git add remote repo-for-push <some other url>
git push repo-for-push master

Mais je voudrais configurer git pour utiliser la valeur par défaut et distinctes des référentiels pour tirer et pousser, j'.e:

git pull # pulls from origin
git push # pushes into repo-for-push, avoiding accidental push into the origin

Comment cela peut-il être configuré? Merci à l'avance.

EDIT:
Fondamentalement, je veux la configuration par défaut push pensions être différente de la valeur par défaut d'extraction/pull repo.

35voto

iny Points 3925

Ressemble à

 git config remote.origin.receivepack /bin/false
 

Fait échouer le transfert à l'origine distante.

27voto

Novelocrat Points 12126

Dans la version 1.6.4, Git acquis la capacité d'avoir une distance de tirer à partir d'une URL et pousser à un autre, à l'aide de l' remote.name.pushurl paramètre de configuration. Je peux imaginer le comportement bizarre si le push-référentiel de ne pas suivre le pull-référentiel, mais je soupçonne Git va juste essayer de faire avancer rapidement le push-référentiel de l'actuel/suivi/correspondance de la branche(es), sans égard pour ce qu'il va tirer quand il demande la télécommande du même nom.

Par exemple, si vous vouliez tirer par anonyme protocole git, mais push via SSH (peut-être vous avez besoin d'une valeur hors d'un jeton SecurID ou quelque chose pour s'authentifier):

[remote "myremote"]
    url = git://server/path
    pushurl = user@server:/path

7voto

Emil Sit Points 11326

Je ne suis pas sûr que vous pouvez réellement faire dans git aujourd'hui. La mise en œuvre de git-fetch (en builtin-fetch.c) et git push (dans builtin-push.c) appel de la fonction interne remote_get(NULL) pour identifier le référentiel par défaut à la traction à partir de/push-to.

Une option serait de créer un alias qui spécifie votre choix repo. Par exemple:

git config --add alias.mypush "push repo-for-push"

Ensuite, vous pouvez:

git mypush

pour pousser votre repo. Pas précisément ce que vous voulez, bien sûr. (Vous pouvez également envisager l' --repo argument pour pousser; voir http://kerneltrap.org/mailarchive/git/2008/10/7/3537694 pour une récente doc de mise à jour que précise l' --repo argument.)

0voto

skiphoppy Points 16563

Si vous pouviez effectuer toutes vos poussées à partir d'une autre branche, je pense que vous pourriez configurer cette branche pour qu'elle dispose de son propre référentiel distinct dans lequel pousser:

 git checkout master
git branch outbound
git remote add destination <some url>
git config branch.outbound.remote destination
 

Je n'ai pas essayé cela, et vous devrez peut-être travailler davantage pour créer une solution complète. Cela pourrait également ne pas fonctionner pour vous, si vous devez pousser du maître.

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