Jak wprowadzić polecenie z hasłem do git pull?

140

Chcę wykonać to polecenie w jednej linii:

git pull && [my passphrase]

Jak to zrobić?

Anton Miedwiediew
źródło
możesz zmienić hasło na puste, wykonując następujące czynności: help.github.com/articles/working-with-ssh-key-passphrases
jacerate
1
Możesz uniknąć konieczności wpisywania hasła, jeśli uruchomisz agenta ssh. Za pierwszym razem, gdy wykonujesz polecenie git pull, robisz to interaktywnie, a agent ssh zapamięta twój klucz prywatny i możesz uruchomić git pull bez pytania.
Tim Finer,

Odpowiedzi:

162

Nie jest to dokładnie to, o co prosiłeś, ale dla http (s):

  • możesz umieścić hasło w pliku .netrc (_netrc w systemie Windows). Stamtąd byłby automatycznie odbierany. Przeszedłby do twojego folderu domowego z 600 uprawnieniami.
  • możesz też po prostu sklonować repozytorium, https://user:pass@domain/repoale nie jest to zalecane, ponieważ pokazałoby użytkownika / przepustkę w wielu miejscach ...
  • nową opcją jest użycie pomocnika poświadczeń . Zauważ, że poświadczenia będą przechowywane w postaci zwykłego tekstu w lokalnej konfiguracji przy użyciu standardowego pomocnika poświadczeń. credential-helper z wincred może być również używany w systemie Windows.

Przykłady użycia pomocnika poświadczeń

  • git config credential.helper store - przechowuje dane uwierzytelniające na czas nieokreślony.
  • git config credential.helper 'cache --timeout=3600'- przechowuje przez 60 minut

W przypadku dostępu opartego na ssh należy użyć agenta ssh, który dostarczy klucz ssh w razie potrzeby. Wymagałoby to wygenerowania kluczy na komputerze, przechowywania klucza publicznego na serwerze zdalnym i dodania klucza prywatnego do odpowiedniego magazynu kluczy.

eis
źródło
1
Czy możesz rozwinąć część dotyczącą SSH? Konfiguruję instancję EC2 i chciałbym, aby ściągała bez żądania hasła i automatycznego skalowania AWS. Ten publiczno-prywatny schemat wygląda na dobre rozwiązanie.
Pedro Dusso
1
@PedroDusso brzmi tak, jakby ten wątek był tym, czego szukasz
eis
2
Skończyłem z mechanizmem wdrażania kluczy, który wydaje się być dobrym rozwiązaniem. Dzięki!
Pedro Dusso
129

Znalazłem jeden sposób na podanie poświadczeń dla połączenia https w wierszu poleceń. Wystarczy podać pełny adres URL do git pull i dołączyć tam poświadczenia:

git pull https://username:password@mygithost.com/my/repository

Nie musisz wcześniej klonować repozytorium z poświadczeniami, oznacza to, że twoje poświadczenia nie trafiają do .git/config. (Ale upewnij się, że twoja powłoka cię nie zdradzi i przechowuje wiersz poleceń w pliku historii).

holgero
źródło
hasło nie jest wymagane, a zapisywanie hasła w ten sposób nie jest bezpieczne
meteor
czy nie jest to jedna z rzeczy, które wymieniłem w zaakceptowanej odpowiedzi już w 2012 roku?
eis
8
@eis: Niezupełnie. Chodzi o to, że nie musisz klonować repozytorium za pomocą adresu URL zawierającego poświadczenia, ale nadal możesz pobrać z adresu URL z poświadczeniami. Efekt jest taki, że poświadczenia nie trafiają do pliku .git / config.
holgero
5
Jeśli pominiesz :passwordczęść, po naciśnięciu Enter zostaniesz poproszony o podanie hasła. W ten sposób Twoje hasło nie zostanie zapisane w historii bash.
Matthias Fischer,
1
Tak, użycie @PramodGarg - git pull nazwa użytkownika: hasł[email protected]/my/repository.git Branch
hasł[email protected]/my/repository.git
39

Nie odpowiada bezpośrednio na pytanie, ale znalazłem to pytanie, szukając sposobu, aby zasadniczo nie wprowadzać ponownie hasła za każdym razem, gdy uruchamiam zdalny serwer .

Cóż, gitpozwala na przechowywanie danych uwierzytelniających w pamięci podręcznej przez określony czas. Można go dostosować w programie, git configa ta strona bardzo dobrze to wyjaśnia:

https://help.github.com/articles/caching-your-github-password-in-git/#platform-linux

W terminalu uruchom:

$ git config --global credential.helper cache
# Set git to use the credential memory cache

Aby dostosować limit czasu pamięci podręcznej, możesz wykonać:

$ git config --global credential.helper 'cache --timeout=3600'
# Set the cache to timeout after 1 hour (setting is in seconds)

Twoje poświadczenia będą następnie przechowywane w pamięci przez żądany czas.

Jivan
źródło
5

Zwróć uwagę, że sposób, w jaki pomocnik poświadczeń git przechowuje niezaszyfrowane hasła, zmienia się w Git 2.5+ (drugi kwartał 2014).
Zobacz commit 17c7f4d autorstwa Junio ​​C Hamano ( gitster)

credential-xdg

Dostosuj " store" przykładowy backend pomocnika poświadczeń, aby uwzględniał lokalizacje plików konfiguracyjnych XDG, jeśli zostały określone.

Doktor mówi teraz:

Jeśli nie określono:

  • dane logowania będą wyszukiwane od ~/.git-credentialsi $XDG_CONFIG_HOME/git/credentials, i
  • poświadczenia zostaną zapisane, ~/.git-credentialsjeśli istnieje, lub $XDG_CONFIG_HOME/git/credentialsjeśli istnieje, a pierwszy nie.
VonC
źródło
0

Poniższy cmd zadziała, jeśli nie mamy @ w haśle: git pull https://username:pass@[email protected]/my/repository Jeśli masz @ w haśle, zamień je na% 40, jak pokazano poniżej: git pull https://username:pass%[email protected]/my/repository

Sagar Deshmukh
źródło