Estou usando o GNU Emacs no Windows e não consigo magit-push
enviar minhas alterações locais para um repositório remoto. Isso acontece com repositórios remotos, independentemente de serem acessados com SSH ou HTTPS. O que preciso fazer para tornar o magit-push
trabalho no Windows tão integrado (ou pelo menos quase) quanto em minhas máquinas Linux?
Tudo o que vejo no *Messages*
buffer é
Running c:/Program Files (x86)/Git/bin/git.exe push -v origin master:refs/heads/master
O mesmo mostra no *magit-process*
buffer, mais ou menos. Nada mais útil. Eu sou capaz de git push a partir da linha de comando, mas solicita a senha da minha chave ssh. Esse pode ser o problema? Tentei carregar a chave com o Pageant (o agente chave do PuTTY), mas isso não pareceu fazer a diferença.
Se for útil, eu tenho o Cygwin instalado e ficaria feliz com uma solução que envolvia forçar o Emacs a usar os executáveis do Cygwin.
fonte
Se você ainda não o fez, eu recomendaria o uso do SSH em vez do HTTP, como muitos me recomendaram durante minha investigação. Dito isso, consegui resolver esse problema usando as Perguntas frequentes abaixo:
https://github.com/magit/magit/wiki/FAQ#windows-cannot-push-with-ssh-passphrase
O componente ausente (do script Git Bash .bashrc do Github) é que ele não lida com a inicialização do ssh-agent para interfaces como a linha de comando do Windows ou o emacs. Seguir as etapas acima inicia o ssh-agent na inicialização do emacs. Observe que você precisará iniciar o Git Bash e digitar sua senha SSH ao iniciar / reiniciar sua máquina.
fonte
Eu também tenho experimentado esse comportamento há algum tempo, e até hoje não consegui realmente tentar corrigi-lo. Fiz isso colocando o seguinte no meu arquivo de inicialização:
Também testei isso abrindo um Emacs (
emacs -Q
) limpo , carregandomagit
e avaliando essa linha, e funcionou.Isso funciona
Pageant
, então não há necessidade de mexerssh-agent
.fonte
Se você já possui o Cygwin instalado, pode usar as chaves e o ambiente das chaves para gerenciar suas chaves.
Use o shell de sua escolha para lançar as chaves e, em seguida,
para garantir que as chaves sejam carregadas no Emacs.
fonte
magit-push
comando travou como sempre.Eu nunca descobri como consertar isso apenas com o MSYS Git e o Emacs, mas aqui está uma solução perfeita.
Adicione o Git Credential Winstore ao seu $ PATH. O Git-Credential-Winstore usará o chaveiro do Windows para gerenciar suas senhas e o Magit enviará felizmente para repositórios remotos.
No seu
.gitconfig
arquivo, defina o seguinte:Isso funciona porque o Git Credential Docs declara que "se o nome do auxiliar não for um caminho absoluto, a cadeia de caracteres git credential- será anexada". Eu prefiro essa abordagem.
Como alternativa, você pode simplesmente executar o git-credential-winstore.exe e ele se instala na pasta AppData e preenche seu
.gitconfig
arquivo com um caminho codificado para sua localização. Depois de executá-lo, você.gitconfig
ficará assim:O ponto de exclamação instrui o Git a tratar a string como um caminho absoluto.
fonte
Como o @bastibe apontou, o Magit provavelmente está aguardando a entrada da senha e apenas fica lá ...
Lembro-me do seguinte trabalho quando fui forçado a usar o Windows :-). Não lembro o nome exato do comando, também verifique se o
exec-path
contémc:/Program Files (x86)/Git/bin/
.fonte
Corri o runemacs.exe a partir do shell do git. Agora, o git push do magit funciona.
fonte
runemacs
está de alguma forma relacionada ao magit.