git: „cache referencji” nie jest poleceniem git

264

Postępowałem zgodnie z instrukcjami do listu, w tym częścią dotyczącą buforowania haseł. Wygląda na to, że instrukcje są nieprawidłowe, ponieważ za każdym razem git push origin masterpojawia się ten błąd:

git: 'credential-cache' is not a git command. See 'get --help'.

... w którym momencie jestem zmuszony wpisać moją nazwę użytkownika i hasło. Po wykonaniu tej czynności ponownie pojawia się ten sam komunikat o błędzie, a następnie komunikat wyjściowy z git push.

Oto zawartość mojego pliku .gitconfig:

[user]
    name = myusername
    email = [email protected]
[credential]
    helper = cache

Dla jasności, po zainstalowaniu Git i uruchomieniu Git Bash, oto dokładnie to, co wpisałem:

git config --global user.name "myusername"
git config --global user.email "[email protected]"
git config --global credential.helper cache

Proszę pomóż. To takie frustrujące!

Big McLargeHuge
źródło
53
Aby usunąć komunikat, „git: 'credential-cache” nie jest poleceniem git. ”, Uruchom„ git config --global --unset credential.helper ”, a następnie postępuj zgodnie z instrukcjami poniżej.
Wallace Kelly
5
@Wally +1 Dzięki, twoje polecenie działało dla mnie dopiero po usunięciu --global.
Web_Designer,
1
możesz alternatywnie usunąć komunikat, ręcznie modyfikując plik .git / config (tj. usuń wiersze poniżej [referencji])
tarikakyol 11.08.16
FWIW dla tych, czytając różne propozycje Okienka poniżej, git config credential.helper cache zrobił dla mnie pracować z Cygwin git wersji 2.13.2.
Flash Sheridan,

Odpowiedzi:

323

Z bloga znalazłem :

„Ten [git-credential-cache] nie działa w systemach Windows, ponieważ git-credential-cache komunikuje się przez gniazdo Unix.”

Git dla Windows

Ponieważ msysgit został zastąpiony przez Git dla Windows, używanie Git dla Windows jest teraz najłatwiejszą opcją. Niektóre wersje instalatora Git dla Windows (np. 2.7.4) mają pole wyboru podczas instalacji, aby włączyć Git Credential Manager. Oto zrzut ekranu:

zrzut ekranu kreatora instalacji Git dla Windows 2.7.4

Nadal używasz msysgit? Dla msysgit wersji 1.8.1 i nowszych

wincredPomocnik został dodany w msysGit 1.8.1. Użyj go w następujący sposób:

git config --global credential.helper wincred

Dla wersji msysgit starszych niż 1.8.1

Najpierw pobierz git-credential-winstore i zainstaluj go w katalogu git bin.

Następnie upewnij się, że katalog zawierający git.cmd znajduje się w zmiennej środowiskowej Path. Domyślny katalog to C: \ Program Files (x86) \ Git \ cmd w systemie 64-bitowym lub C: \ Program Files \ Git \ cmd w systemie 32-bitowym. Prostym sposobem na przetestowanie tego jest uruchomienie wiersza polecenia i wpisanie git. Jeśli nie otrzymasz listy poleceń git, oznacza to, że nie jest poprawnie skonfigurowana.

Na koniec uruchom wiersz polecenia i wpisz:

git config --global credential.helper winstore

Lub możesz edytować plik .gitconfig ręcznie:

[credential]
    helper = winstore

Po wykonaniu tej czynności możesz zarządzać danymi uwierzytelniającymi git za pomocą Menedżera poświadczeń systemu Windows, który możesz pobrać za pomocą Panelu sterowania systemu Windows.

Nate Cook
źródło
4
gitcredentialstore.codeplex.com zawiera FAQ. Pomogło mi to pomyślnie zainstalować winstore. Awaria binarna, chyba że uruchomisz ją z git-bash.
ruruskyi
8
Do Twojej wiadomości musiałem zainstalować z wyraźnymi uprawnieniami administratora. Bez niego pojawiał się błąd „git: 'credential-winstore” nie jest poleceniem git. Patrz „git --help” ”. Mój .gitconfig wygląda teraz trochę inaczej, a [linia danych uwierzytelniających] ma „helper =! 'C: \\ Users \\ Malachi \\ AppData \\ Roaming \\ GitCredStore \\ git-credential-winstore.exe' '
Malachi
kopalni zgłasza wyjątek unhandled i matryce - System.Diagnostics.Process.StartWithShellExecuteEx (ProcessStartInfo startInfo)
Andrew
1
Czy istnieje powód, dla którego mieliby używać gniazd Unix w aplikacji wieloplatformowej? A jeśli tak, to dlaczego git-credential-winstore nie jest domyślnie dostarczany z wersją Git dla systemu Windows?
Domi
3
Narzędzie git-credential-winstore nie działa dla mnie. Kiedyś tak, ale nagle wszędzie pojawia się monit. Sprawdziłem .git-config i Menedżera poświadczeń systemu Windows i wszystko jest tam, co powinno być. Po prostu nie działa i naprawdę nie mam pojęcia, dlaczego. :(
Chris McKenzie
30

Pierwszy bieg git config --global credential.helper wincred

Następnie idź do: CONTROL PANEL\CREDENTIAL MANAGER\WINDOWS CREDENTIAL\GENERIC CREDENTIAL

następnie kliknij dodaj poświadczenie w Internet or network address: dodaj git:https://{nazwa użytkownika}.github.com

User: {imię}

Password: {Hasło}

Ivandro Ismael Gomes Jao
źródło
2
Menedżer poświadczeń jest w kontach użytkowników i bezpieczeństwie rodziny w systemie Windows 7
Casey Murray
1
DZIĘKUJĘ CI! Zajęło mi godzinę, aby dowiedzieć się, jak naprawić Menedżera poświadczeń systemu Windows po zmianie hasła do domeny. Holy Moly, co za labirynt.
SadBunny,
3
%windir%\explorer.exe shell:::{1206F5F1-0569-412C-8FEC-3204630DFB70}z konsoli uruchomi również Credential Manager.
Jeroen Wiert Pluimers
1
Dzięki, mój problem został naprawiony :)
Diallo,
21

Napotkałem ten problem podczas korzystania z AptanaStudio3 na Windows7. Pomogło mi to:

git config --global credential.helper wincred

Kod pobrany stąd

Ikrom
źródło
10

Jest teraz o wiele łatwiejszy sposób konfiguracji buforowania hasła Git poprzez dwukrotne kliknięcie małego pliku exe w systemie Windows. Program jest nadal oparty na git-credential-winstorewspomnianej w głosowaniu odpowiedzi, chociaż projekt został przeniesiony z GitHub na http://gitcredentialstore.codeplex.com/

Możesz pobrać exe (i plik binarny dla komputerów Mac) z tego postu na blogu: https://github.com/blog/1104-credential-caching-for-wrist-friendly-git-usage

Saheed
źródło
Oto odpowiedź, której szukałem. Microsoft zaczął utrzymywać ten projekt. Przechowuje hasła w magazynie poświadczeń systemu Windows.
Gordolio
10

Podobny błąd to 'credential-wincred' is not a git command

Akceptowane i popularne odpowiedzi są już nieaktualne ...

wincreddotyczy projektu git-credential-winstore, który nie jest już obsługiwany .

Został zastąpiony przez Git-Credential-Manager-for-Windows obsługiwany przez Microsoft open source .

Pobierz wersję jako plik zip z powyższego linku i wypakuj zawartość do

\cygwin\usr\libexec\git-core

(lub \cygwin64\usr\libexec\git-corejak może być)

Następnie włącz go (ustawiając globalny .gitconfig) - wykonaj:

git config --global credential.helper manager

Jak używać

Nie jest wymagana dalsza konfiguracja.

Działa [automatycznie], gdy potrzebne są poświadczenia.

Na przykład podczas przesyłania do platformy Azure DevOps otwiera okno i inicjuje przepływ oauth2 w celu pobrania tokena.

ref:

TT--
źródło
8

Najpierw znajdź wersję, której używasz do GIT.

za pomocą tego polecenia: git --version

jeśli masz nowszą wersję niż 1.7.10.

Następnie po prostu użyj tego polecenia.

git config --global credential.helper wincred

Odniesienie

Sireesh Yarlagadda
źródło
6

Ze względu na innych, którzy zgłaszają się na ten problem, miałem ten sam problem w Ubuntu (mianowicie, że moje hasła nie były buforowane, pomimo prawidłowego ustawienia opcji i otrzymania błędu git: 'credential-cache' is not a git command.), dopóki nie dowiedziałem się, że ta funkcja jest tylko dostępne w Git 1.7.9 i nowszych .

Będąc na starszej dystrybucji Ubuntu (Natty; jestem upartym użytkownikiem Gnome 2) wersją repozytorium była wersja git 1.7.4.1. Użyłem następującego PPA do aktualizacji: https://launchpad.net/~git-core/+archive/ppa

Johann
źródło
1
Nadal dostaję git: 'credential-cache' is not a git command.nawet po aktualizacji do wersji 2.8.2 w systemie Windows, mimo że pamięć podręczna poświadczeń działa! Prawdopodobnie stworzyłem ten problem, używając git configwcześniejszej komendy.
Buttle Butkus
1
@ButtleButkus git config zmienia albo ~/.gitconfigrepo-local .git/config, w zależności od tego, czy --globalużyto flagi. Spójrz na te dwa pliki, aby uzyskać informacje na temat poświadczeń.
Johann
5

Ze względu na inne osoby mające ten problem - wylądowałem tutaj, ponieważ próbowałem urozmaicić się tym, jak utworzyłem nowe repozytorium github, ale pomocnik poświadczeń strony konfiguracji nie działa, chyba że sklonujesz repozytorium.

„Wskazówka: Pomocnik poświadczeń działa tylko po sklonowaniu adresu URL repozytorium HTTPS. Jeśli zamiast tego użyjesz adresu URL repozytorium SSH, klucze SSH są używane do uwierzytelniania. Ten przewodnik oferuje pomoc w generowaniu i użyciu pary kluczy SSH”.

Andrzej
źródło
4

Rozwiązałem ten problem, usuwając credentialsekcję z konfiguracji konkretnego projektu:

  • Właśnie wpisałem: git config -e
  • W edytorze usunąłem całą sekcję [credential] helper = cache.

To usunęło irytującą wiadomość:

git: 'credential-cache' is not a git command. See 'git --help'.

Pini Cheyni
źródło
1
Próbowałem wielu rozwiązań z góry i tylko to zadziałało. Po prostu poszedłem do mojego folderu .git, otworzyłem plik konfiguracyjny i usunąłem [referencje] helper = global (przypadkowo ustawiłem go na „globalny”). Wielkie dzięki, Pini Cheyni.
Filip Savic,
1
Cieszę się, że mogłem pomóc
Pini Cheyni
3

Zdaję sobie sprawę, że jestem trochę spóźniony do rozmowy, ale napotkałem dokładnie ten sam problem W mojej konfiguracji git miałem dwa wpisy poświadczeń…

W moim pliku .gitconfig

[credential]
helper = cached
[credentials]
helper = wincred

Poprawka: Zmieniłem mój plik .gitconfig na poniższe ustawienia

[credential]
helper = wincred
[credentials]
helper = wincred
Jason Phillips
źródło
0

Ten sam problem występował z naszymi repozytoriami DevOps Azure po zmianie naszej domeny, tj. Z @ xy.com na @ xyz.com. Aby rozwiązać ten problem, wygenerowaliśmy nowy token dostępu osobistego z następującymi uprawnieniami:

Kod: odczyt i zapis Opakowanie: odczyt

Następnie otworzyliśmy Menedżera poświadczeń systemu Windows, dodaliśmy nowe ogólne poświadczenie systemu Windows z następującymi szczegółami:

Adres internetowy lub sieciowy: „git: { projectname } @ dev.azure.com / { projectname }” - alternatywnie tutaj należy użyć nazwy repozytorium git.
Nazwa użytkownika: „Token dostępu osobistego”
Hasło: { Wygenerowany token dostępu osobistego }

Następnie wszystkie nasze operacje git znów działały. Mam nadzieję, że to pomoże komuś innemu!

DeveloperExceptionError
źródło