Я использую GNU Emacs в Windows, и я не могу использовать его magit-push
для отправки своих локальных изменений в удаленный репозиторий. Это происходит с удаленными репозиториями независимо от того, доступны ли они по SSH или HTTPS. Что мне нужно сделать, чтобы сделать magit-push
работу в Windows такой же гладкой (или, по крайней мере, почти такой же), как и на моих машинах с Linux?
Все, что я вижу в *Messages*
буфере, это
Running c:/Program Files (x86)/Git/bin/git.exe push -v origin master:refs/heads/master
То же самое показывает в *magit-process*
буфере, более или менее. Ничего более полезного. Я могу нажать push из командной строки, но он запрашивает пароль моего ключа ssh. Может ли это быть проблемой? Я пытался загрузить ключ с помощью Pageant (ключевого агента PuTTY), но это, похоже, не имело значения.
Если это полезно, у меня установлен Cygwin, и я был бы рад решению, которое заставляло Emacs использовать исполняемые файлы Cygwin.
источник
Если вы еще этого не сделали, я бы порекомендовал использовать SSH вместо HTTP, как многие рекомендовали мне во время моего исследования этого. Тем не менее, я смог решить эту проблему, используя приведенный ниже FAQ:
https://github.com/magit/magit/wiki/FAQ#windows-cannot-push-with-ssh-passphrase
Отсутствующий компонент (из сценария Git Bash .bashrc Github) заключается в том, что он не обрабатывает запуск ssh-agent для таких интерфейсов, как командная строка Windows или emacs. Выполнение вышеуказанных шагов запускает ssh-agent при запуске emacs. Обратите внимание, что вам нужно будет запустить Git Bash и ввести вашу парольную фразу SSH при запуске / перезагрузке компьютера.
источник
Я тоже испытывал это поведение некоторое время, и до сегодняшнего дня не удосужился действительно попытаться это исправить. Я сделал это, поместив следующее в мой init-файл:
Я также проверил это, открыв чистый Emacs (
emacs -Q
), загрузивmagit
и оценив эту строку, и это сработало.Это работает с
Pageant
, так что нет необходимости возиться сssh-agent
.источник
Если у вас уже установлен Cygwin, вы можете использовать keychain и keychain-environment для управления вашими ключами.
Используйте оболочку по вашему выбору для запуска связки ключей, затем
чтобы ключи были загружены в Emacs.
источник
magit-push
зависла так же, как и всегда.Я никогда не думал, как это исправить, используя только MSYS Git и Emacs, но здесь есть обходной путь.
Добавьте Gin Credential Winstore в ваш каталог $ PATH. Git-Credential-Winstore будет использовать цепочку ключей Windows для управления вашими паролями, а Magit с радостью отправит их в удаленные репозитории.
В вашем
.gitconfig
файле установите следующее:Это работает, потому что в документации Git Credential Docs говорится, что «если имя помощника не является абсолютным путем, то перед строкой git credential- добавляется префикс». Я предпочитаю такой подход.
Кроме того, вы можете просто запустить git-credential-winstore.exe, и он установится в вашу папку AppData и заполнит ваш
.gitconfig
файл жестко заданным путем к его местоположению. После запуска вы.gitconfig
будете выглядеть так:Восклицательный знак указывает Git на обработку строки как абсолютного пути.
источник
Как указал @bastibe, Magit, вероятно, ожидает ввода пароля и просто зависает там ...
Я помню следующую работу, когда я был вынужден использовать Windows :-). Я не помню точное имя команды, также убедитесь, что
exec-path
содержитc:/Program Files (x86)/Git/bin/
.источник
Я запустил runemacs.exe из оболочки git. Теперь Git Push от Magit работает.
источник
runemacs
так или иначе связан с magit.