magit-push Windows'da kilitleniyor


10

Windows'ta GNU Emacs kullanıyorum ve magit-pushyerel değişikliklerimi uzak bir depoya aktarmak için kullanamıyorum . Bu, SSH veya HTTPS ile erişilip erişilmediğine bakılmaksızın uzak depolarda olur. magit-pushWindows üzerinde Linux makinelerimdeki gibi sorunsuz (veya en azından neredeyse) çalışmak için ne yapmam gerekir ?

*Messages*Arabellekte gördüğüm tek şey

Running c:/Program Files (x86)/Git/bin/git.exe push -v origin master:refs/heads/master

Aynı şey *magit-process*tamponda az çok görülür. Daha faydalı bir şey yok. Komut satırından push tuşuna basabiliyorum ama ssh anahtarımın şifresini istiyor. Sorun bu olabilir mi? Pageant (PuTTY'nin anahtar ajanı) ile anahtarı yüklemeyi denedim, ancak bu bir fark yaratmadı.

Yardımcı olursa, Cygwin yükledim ve Emacs'ı Cygwin'in yürütülebilir dosyalarını kullanmaya zorlayan bir çözümden memnun olurum.

Yanıtlar:


6

Magit'in wiki'sinde , MS Windows kullanırken Magit'ten itebileceğiniz çeşitli yollar hakkında bir sayfa bulunmaktadır . Ayrıca yeni ssh-agencypakete göz atın. Hem wiki sayfası hem de paket @npostavs tarafından yazılmıştır.

Ayrıca, itemezseniz Magit'in hatası olmadığını neredeyse unutmayın. Bu genellikle bir yapılandırma sorunudur (kabuğundan itebiliyor olsanız bile Magit kullanırken değil).


6

Genellikle, sorun Emacs'ın Windows'da git parola istemine erişememesidir. Böylece, gerçekten şifrenizi bekliyor olduğu, push "asmak" gibi görünüyor. Git deponuzda bir kullanıcı adı / parola yerine bir ssh anahtarı kullanarak ve kabukta ilk pushu manuel olarak yaparak bunu atlayabilirsiniz (git, ilk pushtan sonra ssh parolanızı hatırlar).


1
Git bash kabuğu ssh şifremi hatırlamıyor gibi görünüyor, bu yüzden daha fazla itme aynı şeyi görüyor.
Ryan

3

Henüz yapmadıysanız, bu soruşturmayı yaparken bana birçok kişinin önerdiği gibi HTTP yerine SSH kullanmanızı öneririm. Bununla birlikte, aşağıdaki SSS'yi kullanarak bu sorunu çözebildim dedi:

https://github.com/magit/magit/wiki/FAQ#windows-cannot-push-with-ssh-passphrase

Eksik bileşen (Github'ın Git Bash .bashrc betiğinden), Windows komut satırı veya emacs gibi arabirimler için ssh-agent başlatmasını işlememesidir. Yukarıdaki adımları izleyerek emacs başlangıcında ssh-agent'ı başlatır. Git Bash'i başlatmanız ve makinenizi başlattıktan / yeniden başlattıktan sonra SSH parolanızı girmeniz gerekeceğini unutmayın.


2

Ben de bu davranışı bir süredir yaşadım ve bugüne kadar gerçekten düzeltmeye çalışmadım. Bunu init dosyama şu şekilde yerleştirerek yaptım:

(setenv "GIT_SSH" "C:/Path/to/PuTTY/plink.exe")

Bunu temiz bir Emacs ( emacs -Q) açarak magit, o satırı yükleyerek ve değerlendirerek de test ettim ve işe yaradı.

Bu ile çalışır Pageant, bu yüzden uğraşmanıza gerek yoktur ssh-agent.


1
Benim için bu, komut satırı git'i yükleyen biri ve pageant gibi PuTTY ile ilgili yürütülebilir dosyalar için en iyi çözümdü.
Tom Purl

1

Zaten Cygwin kurulu ise , anahtarlarınızı yönetmek için anahtarlık ve anahtarlık ortamını kullanabilirsiniz.

Anahtarlık başlatmak için istediğiniz kabuğu kullanın, ardından

(require 'keychain-environment)
(keychain-refresh-environment)

tuşların Emacs'a yüklendiğinden emin olmak için.


Hmmm. Bunu denedim ve hiçbir şey gerçekten değişmedi. magit-pushKomut hep yaptığı gibi asılı.
Ryan

1

Bunu sadece MSYS Git ve Emacs ile nasıl düzeltebileceğimi anlamadım, ancak işte sorunsuz bir çözüm.

Ekle Git Kimlik Winstore $ PATH için. Git-Credential-Winstore, şifrelerinizi sizin için yönetmek için Windows anahtar zincirini kullanacak ve Magit mutlu bir şekilde uzak depolara itecektir.

Senin içinde .gitconfigdosyaya aşağıdakileri ayarlayın:

[credential]
        helper = "winstore"

Bunun nedeni Git Kimlik Bilgileri Dokümanı'nın "yardımcı adı mutlak bir yol değilse, git kimlik bilgisi- dizesinin başlangıcını" belirttiği için çalışır. Bu yaklaşımı tercih ederim.

Alternatif olarak, git-credential-winstore.exe dosyasını çalıştırabilir ve kendisini AppData klasörünüze yükler ve .gitconfigdosyanızı konumunun sabit kodlu bir yoluyla doldurur . Çalıştırdıktan sonra .gitconfigşöyle görüneceksiniz:

[credential]
        helper = !"c:\\Users\Joe\\\AppData\\Roaming\\GitCredStore\\git-credential-winstore.exe"

Ünlem işareti Git'e dizeye mutlak bir yol gibi davranmasını söyler.


0

@Bastibe'nin işaret ettiği gibi, Magit muhtemelen bir şifre girişi bekliyor ve sadece orada asılı duruyor ...

Windows :-) kullanmaya zorlandığımda aşağıdaki çalışmayı hatırlıyorum. Tam komut adını hatırlamıyorum, ayrıca exec-pathiçerdiğinden emin olun c:/Program Files (x86)/Git/bin/.

(setenv "GIT_ASKPASS" "git-gui--askpass")

0

Git kabuk runemacs.exe koştu. Şimdi magit git git çalışır.


1
Bu, hiçbir şekilde soruyla ilgili görünmüyor. Soruyu cevaplamak istiyorsanız, lütfen runemacskoşmanın magit ile bir şekilde nasıl ilişkili olduğunu açıklayan cevabınızı düzenleyin .
Gilles 'SO- kötü olmayı bırak'

Güzel. daha iyi açıklamak için bir şans bile önce silinmek için işaretlenmiş olsun? bu sorunun cevabı (çözümü).
Majid alDosari

1
Cevabın indirilmeyi hak ettiğini düşünmüyorum. Ancak neden çalıştığını açıklamak daha iyi olabilir (Git kabuğundan pencerelerde çalışıyorsa, bazı ortam değişkenleri Emacs'ta farklı şekilde başlatılır, bu da Magit'in Git ile anladığı şekilde etkileşime girmesine neden olur). Belki de OP'nin Magit komutlarını çalıştırmaya çalışma biçimi Git ile Magit'in beklemediği bir şekilde etkileşime girdi.
wvxvw

1
Bu bir cevap. Kullanıcı neden bir fark yarattığını bilmiyor olabilir , ancak kendi durumunda neyin işe yaradığını söylüyor.
Malabarba
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.