J'utilise GNU Emacs sur Windows et je ne peux pas utiliser magit-push
pour pousser mes modifications locales vers un référentiel distant. Cela se produit avec les référentiels distants, qu'ils soient accessibles via SSH ou HTTPS. Que dois-je faire pour que le magit-push
travail sur Windows soit aussi transparent (ou du moins presque) que sur mes machines Linux?
Tout ce que je vois dans le *Messages*
tampon est
Running c:/Program Files (x86)/Git/bin/git.exe push -v origin master:refs/heads/master
La même chose se voit *magit-process*
plus ou moins dans le tampon. Rien de plus utile. Je suis capable de pousser depuis la ligne de commande, mais il demande le mot de passe de ma clé ssh. Serait-ce le problème? J'ai essayé de charger la clé avec Pageant (l'agent clé de PuTTY), mais cela ne semble pas faire de différence.
Si cela est utile, j'ai installé Cygwin et serais heureux avec une solution qui impliquait de forcer Emacs à utiliser les exécutables de Cygwin.
Si vous ne l'avez pas déjà fait, je recommanderais d'utiliser SSH au lieu de HTTP comme beaucoup me l'ont recommandé lors de mon enquête à ce sujet. Cela dit, j'ai pu résoudre ce problème en utilisant la FAQ ci-dessous:
https://github.com/magit/magit/wiki/FAQ#windows-cannot-push-with-ssh-passphrase
Le composant manquant (du script Git Bash .bashrc de Github) est qu'il ne gère pas le démarrage de ssh-agent pour les interfaces telles que la ligne de commande Windows ou emacs. Suivre les étapes ci-dessus lance ssh-agent au démarrage d'emacs. Remarque, vous devrez démarrer Git Bash et saisir votre phrase secrète SSH lors du démarrage / redémarrage de votre machine.
la source
Moi aussi, j'ai connu ce comportement pendant un certain temps, et jusqu'à aujourd'hui, je n'ai pas vraiment essayé de le réparer. Je l'ai fait en plaçant ce qui suit dans mon fichier init:
J'ai également testé cela en ouvrant un Emacs (
emacs -Q
) propre , en chargeantmagit
et en évaluant cette ligne, et cela a fonctionné.Cela fonctionne avec
Pageant
, donc il n'est pas nécessaire de jouer avecssh-agent
.la source
Si Cygwin est déjà installé, vous pouvez utiliser le trousseau et l' environnement de trousseau pour gérer vos clés.
Utilisez le shell de votre choix pour lancer le trousseau, puis
pour vous assurer que les clés sont chargées dans Emacs.
la source
magit-push
commande s'est bloquée comme elle le fait toujours.Je n'ai jamais compris comment résoudre ce problème avec seulement MSYS Git et Emacs, mais voici une solution de contournement transparente.
Ajoutez Git Credential Winstore à votre $ PATH. Git-Credential-Winstore utilisera le trousseau Windows pour gérer vos mots de passe pour vous et Magit se fera un plaisir de pousser vers des référentiels distants.
Dans votre
.gitconfig
fichier, définissez les éléments suivants:Cela fonctionne parce que les documents d'informations d'identification Git indiquent que "si le nom de l'assistant n'est pas un chemin absolu, la chaîne d'informations d'identification git est ajoutée". Je préfère cette approche.
Alternativement, vous pouvez simplement exécuter git-credential-winstore.exe et il s'installera dans votre dossier AppData et remplira votre
.gitconfig
fichier avec un chemin codé en dur vers son emplacement. Après l'avoir exécuté, votre.gitconfig
ressemblera à ceci:Le point d'exclamation demande à Git de traiter la chaîne comme un chemin absolu.
la source
Comme l'a souligné @bastibe, Magit attend probablement une entrée de mot de passe et se bloque juste là ...
Je me souviens du fonctionnement suivant lorsque j'ai été obligé d'utiliser Windows :-). Je ne me souviens pas du nom exact de la commande, assurez-vous également que le
exec-path
contientc:/Program Files (x86)/Git/bin/
.la source
J'ai exécuté runemacs.exe à partir du shell git. Maintenant, le git push de magit fonctionne.
la source
runemacs
est liée à magit.