Używam GNU Emacs w systemie Windows i nie mogę użyć magit-push
do wypchnięcia moich lokalnych zmian do zdalnego repozytorium. Dzieje się tak w przypadku zdalnych repozytoriów, niezależnie od tego, czy są dostępne za pośrednictwem SSH czy HTTPS. Co muszę zrobić, aby magit-push
praca w systemie Windows była tak płynna (a przynajmniej prawie tak samo) jak na moich komputerach z systemem Linux?
Wszystko, co widzę w *Messages*
buforze, to
Running c:/Program Files (x86)/Git/bin/git.exe push -v origin master:refs/heads/master
To samo pokazuje *magit-process*
mniej więcej w buforze. Nic bardziej przydatnego. Jestem w stanie git push z linii poleceń, ale pyta o hasło do mojego klucza ssh. Czy to może być problem? Próbowałem załadować klucz za pomocą Pageant (kluczowy agent PuTTY), ale nie miało to większego znaczenia.
Jeśli jest to pomocne, mam zainstalowany Cygwin i byłbym zadowolony z rozwiązania polegającego na zmuszeniu Emacsa do korzystania z plików wykonywalnych Cygwin.
źródło
Jeśli jeszcze tego nie zrobiłeś, zaleciłbym użycie SSH zamiast HTTP, ponieważ wiele osób poleciło mi to podczas mojego dochodzenia w tej sprawie. To powiedziawszy, byłem w stanie rozwiązać ten problem, korzystając z poniższych FAQ:
https://github.com/magit/magit/wiki/FAQ#windows-cannot-push-with-ssh-passphrase
Brakującym komponentem (ze skryptu Gitub Bashrc Gituba) jest to, że nie obsługuje uruchamiania ssh-agent dla interfejsów takich jak linia poleceń Windows lub emacs. Wykonanie powyższych kroków inicjuje ssh-agent po uruchomieniu emacsa. Pamiętaj, że musisz uruchomić Git Bash i wprowadzić hasło SSH po uruchomieniu / ponownym uruchomieniu komputera.
źródło
Ja także doświadczyłem tego zachowania od jakiegoś czasu i do dzisiaj nie próbowałem go naprawić. Zrobiłem to, umieszczając w moim pliku init:
Przetestowałem to również, otwierając czystą Emacsa (
emacs -Q
), ładującmagit
i oceniając tę linię, i zadziałało.Działa to z
Pageant
, więc nie trzeba się z tym bawićssh-agent
.źródło
Jeśli masz już zainstalowany Cygwin, możesz używać pęku kluczy i środowiska pęku kluczy do zarządzania swoimi kluczami.
Użyj wybranej powłoki, aby uruchomić pęku kluczy
aby upewnić się, że klucze są załadowane do Emacsa.
źródło
magit-push
Komenda wisiał tak jak to zawsze robi.Nigdy nie wymyśliłem, jak to naprawić za pomocą MSYS Git i Emacsa, ale oto bezproblemowe obejście.
Dodaj Git Credential Winstore do swojej $ PATH. Git-Credential-Winstore użyje pęku kluczy Windows do zarządzania hasłami dla Ciebie, a Magit chętnie prześle do zdalnych repozytoriów.
W swoim
.gitconfig
pliku ustaw następujące opcje:Działa to, ponieważ Git Credential Docs stwierdzają, że „jeśli nazwa pomocnika nie jest ścieżką bezwzględną, wówczas ciąg git credential- jest poprzedzany”. Wolę to podejście.
Alternatywnie możesz po prostu uruchomić git-credential-winstore.exe, a on sam zainstaluje się w folderze AppData i wypełni
.gitconfig
plik zapisaną na stałe ścieżką do jego lokalizacji. Po uruchomieniu.gitconfig
będzie wyglądać następująco:Wykrzyknik instruuje Gita, aby traktował ciąg jako ścieżkę bezwzględną.
źródło
Jak wskazał @bastibe, Magit prawdopodobnie czeka na hasło i po prostu się tam zatrzymuje ...
Pamiętam następujące działania, kiedy zmuszono mnie do korzystania z systemu Windows :-). Nie pamiętam dokładnej nazwy polecenia, upewnij się również, że
exec-path
zawierac:/Program Files (x86)/Git/bin/
.źródło
Uruchomiłem runemacs.exe z powłoki git. Teraz działa git push z Magit.
źródło
runemacs
jest w jakiś sposób powiązane z magit.