Saya menggunakan GNU Emacs di Windows, dan saya tidak dapat menggunakan magit-push
untuk mendorong perubahan lokal saya ke repositori jarak jauh. Ini terjadi dengan repositori jarak jauh terlepas dari apakah mereka diakses dengan SSH atau HTTPS. Apa yang harus saya lakukan agar magit-push
Windows berfungsi dengan mulus (atau setidaknya hampir seperti itu) seperti pada mesin Linux saya?
Yang saya lihat di *Messages*
buffer adalah
Running c:/Program Files (x86)/Git/bin/git.exe push -v origin master:refs/heads/master
Acara yang sama di *magit-process*
buffer, lebih atau kurang. Tidak ada yang lebih bermanfaat. Saya bisa mendapatkan push dari baris perintah, tetapi ia meminta kata sandi kunci ssh saya. Mungkinkah itu masalahnya? Saya sudah mencoba memuat kunci dengan Pageant (agen kunci Putty), tetapi itu tampaknya tidak membuat perbedaan.
Jika ini membantu, saya telah menginstal Cygwin, dan akan senang dengan solusi yang melibatkan memaksa Emacs untuk menggunakan executable Cygwin.
sumber
Jika Anda belum melakukannya, saya akan merekomendasikan menggunakan SSH daripada HTTP karena banyak yang telah merekomendasikan kepada saya selama penyelidikan saya ini. Yang mengatakan, saya bisa menyelesaikan masalah ini menggunakan FAQ di bawah ini:
https://github.com/magit/magit/wiki/FAQ#windows-cannot-push-with-ssh-passphrase
Komponen yang hilang (dari skrip Git Bash .bashrc Github) adalah bahwa ia tidak menangani startup ssh-agent untuk antarmuka seperti baris perintah Windows atau emacs. Mengikuti langkah-langkah di atas memulai ssh-agent pada emacs startup. Catatan, Anda harus memulai Git Bash dan memasukkan frasa sandi SSH Anda setelah memulai / memulai ulang mesin Anda.
sumber
Saya juga telah mengalami perilaku ini untuk sementara waktu, dan sampai hari ini belum sempat untuk benar-benar berusaha memperbaikinya. Saya melakukannya dengan menempatkan yang berikut ini di file init saya:
Saya juga menguji ini dengan membuka Emacs bersih (
emacs -Q
), memuatmagit
, dan mengevaluasi baris itu, dan itu berhasil.Ini berfungsi dengan baik
Pageant
, jadi tidak perlu dipusingkanssh-agent
.sumber
Jika Anda sudah menginstal Cygwin, Anda dapat menggunakan gantungan kunci dan lingkungan gantungan kunci untuk mengelola kunci Anda.
Gunakan cangkang pilihan Anda untuk meluncurkan gantungan kunci, lalu
untuk memastikan kunci dimuat ke Emacs.
sumber
magit-push
perintah digantung seperti yang selalu terjadi.Saya tidak pernah menemukan cara untuk memperbaikinya hanya dengan MSYS Git dan Emacs, tapi inilah solusinya.
Tambahkan Git Credential Winstore ke $ PATH Anda. Git-Credential-Winstore akan menggunakan gantungan kunci Windows untuk mengelola kata sandi Anda dan Magit akan dengan senang hati mendorong repositori jarak jauh.
Di
.gitconfig
file Anda , atur yang berikut ini:Ini berfungsi karena Documents Kredensial Git menyatakan bahwa "jika nama helper bukan path absolut, maka string git credential- didahulukan." Saya lebih suka pendekatan ini.
Sebagai alternatif, Anda cukup menjalankan git-credential-winstore.exe dan itu akan menginstal sendiri ke folder AppData Anda dan mengisi
.gitconfig
file Anda dengan jalur hardcoded ke lokasi itu. Setelah menjalankannya, Anda.gitconfig
akan terlihat seperti ini:Tanda seru memerintahkan Git untuk memperlakukan string sebagai jalur absolut.
sumber
Seperti yang ditunjukkan @bastibe, Magit mungkin sedang menunggu input kata sandi dan hanya menggantung di sana ...
Saya ingat yang berikut ini berfungsi ketika saya terpaksa menggunakan Windows :-). Saya tidak ingat nama perintah yang tepat, juga memastikan bahwa
exec-path
mengandungc:/Program Files (x86)/Git/bin/
.sumber
Saya menjalankan runemacs.exe dari shell git. Sekarang git push dari magit bekerja.
sumber
runemacs
yang terkait dengan magit.