Estoy usando GNU Emacs en Windows, y no puedo usarlo magit-push
para enviar mis cambios locales a un repositorio remoto. Esto sucede con los repositorios remotos, independientemente de si se accede a ellos con SSH o HTTPS. ¿Qué debo hacer para que el magit-push
trabajo en Windows funcione tan bien (o al menos casi) como en mis máquinas Linux?
Todo lo que veo en el *Messages*
búfer es
Running c:/Program Files (x86)/Git/bin/git.exe push -v origin master:refs/heads/master
Lo mismo se muestra en el *magit-process*
búfer, más o menos. Nada mas util. Puedo acceder a git push desde la línea de comandos, pero me pide la contraseña de mi clave ssh. ¿Podría ser ese el problema? Intenté cargar la clave con Pageant (agente clave de PuTTY), pero eso no pareció marcar la diferencia.
Si es útil, tengo instalado Cygwin, y estaría contento con una solución que involucrara forzar a Emacs a usar los ejecutables de Cygwin.
fuente
Si aún no lo ha hecho, recomendaría usar SSH en lugar de HTTP, ya que muchos me lo recomendaron durante mi investigación de esto. Dicho esto, pude resolver este problema usando las siguientes preguntas frecuentes:
https://github.com/magit/magit/wiki/FAQ#windows-cannot-push-with-ssh-passphrase
El componente que falta (del script Git Bash .bashrc de Github) es que no maneja el inicio de ssh-agent para interfaces como la línea de comandos de Windows o emacs. Seguir los pasos anteriores inicia ssh-agent al iniciar emacs. Tenga en cuenta que deberá iniciar Git Bash e ingresar su frase de contraseña SSH al iniciar / reiniciar su máquina.
fuente
Yo también he experimentado este comportamiento por un tiempo, y hasta hoy no he podido realmente tratar de arreglarlo. Lo hice colocando lo siguiente en mi archivo init:
También probé esto abriendo un Emacs limpio (
emacs -Q
), cargandomagit
y evaluando esa línea, y funcionó.Esto funciona con
Pageant
, por lo que no hay necesidad de meterse conssh-agent
.fuente
Si ya tiene instalado Cygwin, puede usar llavero y entorno de llavero para administrar sus claves.
Use el caparazón de su elección para iniciar el llavero, luego
para garantizar que las claves se carguen en Emacs.
fuente
magit-push
comando colgaba como siempre lo hace.Nunca descubrí cómo solucionar esto solo con MSYS Git y Emacs, pero aquí hay una solución transparente.
Agregue Git Credential Winstore a su $ PATH. Git-Credential-Winstore usará el llavero de Windows para administrar sus contraseñas por usted y Magit se trasladará felizmente a repositorios remotos.
En su
.gitconfig
archivo, configure lo siguiente:Esto funciona porque los documentos de credenciales de Git establecen que "si el nombre del ayudante no es una ruta absoluta, entonces la cadena de credenciales de git se antepone". Prefiero este enfoque.
Alternativamente, simplemente puede ejecutar git-credential-winstore.exe y se instalará en su carpeta AppData y completará su
.gitconfig
archivo con una ruta codificada a su ubicación. Después de ejecutarlo,.gitconfig
se verá así:El signo de exclamación le indica a Git que trate la cadena como una ruta absoluta.
fuente
Como señaló @bastibe, Magit probablemente esté esperando una entrada de contraseña y simplemente se queda allí ...
Recuerdo el siguiente trabajo cuando me vi obligado a usar Windows :-). No recuerdo el nombre exacto del comando, también asegúrese de que
exec-path
contienec:/Program Files (x86)/Git/bin/
.fuente
Ejecuté runemacs.exe desde el shell git. Ahora el empuje git de magit funciona.
fuente
runemacs
tenía la intención de responder la pregunta, edite su respuesta que explique cómo la ejecución está relacionada de alguna manera con magit.