Czy istnieje sposób na buforowanie poświadczeń GitHub dla pchania commitów?

Niedawno przełączyłem się na synchronizację moich repozytoriów do https:/ / na GitHub (z powodu problemów z zaporą ogniową) i za każdym razem prosi o hasło.

Czy istnieje sposób na buforowanie poświadczeń, zamiast uwierzytelniania za każdym razem, że git push?

Author: ivanleoncz, 2011-03-17

24 answers

Z Git w wersji 1.7.9 i nowszej

Od wersji Git 1.7.9 (wydanej pod koniec stycznia 2012), w Git istnieje zgrabny mechanizm, który pozwala uniknąć konieczności wpisywania hasła przez cały czas dla HTTP / HTTPS, zwany pomocnikami uwierzytelniającymi. (Podziękowania dla dazonic za wskazanie tej nowej funkcji w komentarzach poniżej.)

W Git 1.7.9 lub nowszym, możesz po prostu użyć jednego z następujących helperów poświadczeń:

git config --global credential.helper cache

... który mówi Git, aby Twoje hasło było buforowane w pamięć (domyślnie) 15 minut. Możesz ustawić dłuższy timeout za pomocą:

git config --global credential.helper "cache --timeout=3600"

(ten przykład został zasugerowany na stronie pomocy GitHub dla Linuksa .) Możesz również przechowywać swoje dane uwierzytelniające na stałe, jeśli chcesz, zobacz inne Odpowiedzi poniżej.

Pomoc Githuba sugeruje również , że jeśli korzystasz z Mac OS X i używasz Homebrew do instalacji Gita, możesz użyć natywnego klucza Mac OS X:

git config --global credential.helper osxkeychain

Dla Windows istnieje helper o nazwie W przeciwieństwie do innych systemów Windows, git Credential Manager może być używany w systemach Windows.

git config --global credential.helper wincred # obsolete
[26]}Z Git dla Windows 2.7.3+ (Marzec 2016):
git config --global credential.helper manager

Dla Linuksa , można by użyć (w 2011) gnome-keyring(lub inne implementacje keyringu, takie jak KWallet).

W 2014 roku, w 2015 roku, na Linuksie pojawił się nowy system operacyjny.]}

Fedora

sudo dnf install git-credential-libsecret
git config --global credential.helper /usr/libexec/git-core/git-credential-libsecret

Ubuntu

sudo apt-get install libsecret-1-0 libsecret-1-dev
cd /usr/share/doc/git/contrib/credential/libsecret
sudo make
git config --global credential.helper /usr/share/doc/git/contrib/credential/libsecret/git-credential-libsecret

Z wersjami Git przed 1.7.9

Z wersjami Git przed 1.7.9, to więcej opcja Bezpieczna nie jest dostępna i musisz zmienić adres URL, którego używa twój pilot origin, aby dołączyć hasło w ten sposób: [31]}

https://you:[email protected]/you/example.git

... innymi słowy z :password po nazwie użytkownika i przed @.

Możesz ustawić nowy adres URL dla swojego pilota origin za pomocą:
git config remote.origin.url https://you:[email protected]/you/example.git

Upewnij się, że używasz https, i powinieneś mieć świadomość, że jeśli to zrobisz, Twoje hasło GitHub zostanie zapisane w zwykłym tekście w katalogu .git, co jest oczywiście niepożądane.

Z dowolną wersją Git (dobrze, od wersji 0.99)

Alternatywnym podejściem jest umieszczenie nazwy użytkownika i hasła w pliku ~/.netrc, chociaż, podobnie jak w przypadku przechowywania hasła w zdalnym adresie URL, oznacza to, że hasło będzie przechowywane na dysku w postaci zwykłego tekstu, a tym samym jest mniej bezpieczne i nie zalecane. Jednak, jeśli chcesz skorzystać z tego podejścia, dodaj następującą linię do ~/.netrc:

machine <hostname> login <username> password <password>

... zastąpienie <hostname> nazwą hosta serwera, oraz <username> i <password> z Twoją nazwą użytkownika i hasłem. Pamiętaj również, aby ustawić restrykcyjne Uprawnienia systemu plików dla tego pliku:

chmod 600 ~/.netrc

Zauważ, że w systemie Windows Plik ten powinien być wywołany _netrc i może być konieczne zdefiniowanie zmiennej środowiskowej % HOME% - więcej szczegółów można znaleźć w:

 2437
Author: Mark Longair,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-09-30 20:03:06

Możesz również poprosić Git o stałe zapisanie Twoich danych uwierzytelniających, używając:

git config credential.helper store

Uwaga: Podczas gdy jest to wygodne, Git będzie przechowywać Twoje poświadczenia w czystym tekście w plik lokalny (.Git-credentials) w katalogu twojego projektu (zobacz poniżej katalog" home"). Jeśli ci się to nie podoba, usuń ten plik i przełącz na korzystanie z opcja cache.

Jeśli chcesz, aby Git ponownie poprosił Cię o poświadczenia za każdym razem, gdy potrzebuje podłączyć do zdalnego repozytorium, można uruchomić to polecenie:

git config --unset credential.helper

Aby przechowywać hasła w .git-credentials w katalogu %HOME% w przeciwieństwie do katalogu projektu: użyj znacznika --global

git config --global credential.helper store
 730
Author: Giri Alwar,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-02-18 20:15:43

TLDR; użyj zaszyfrowanego pliku netrc z Git 1.8.3 + .

Zapisywanie hasła do repozytorium Git HTTPS URL jest możliwe za pomocą ~/.netrc (Unix) lub %HOME%/_netrc (zwróć uwagę na _) w systemie Windows.

Ale: ten plik przechowywałby Twoje hasło w zwykłym tekście.

Rozwiązanie : Zaszyfruj ten plik za pomocą GPG (GNU Privacy Guard) i spraw, aby Git odszyfrował go za każdym razem, gdy potrzebuje hasła (dla push/pull/fetch/clone operacji).


Uwaga: w Git 2.18 (Q2 2018) możesz teraz dostosować GPG używane do odszyfrowania zaszyfrowanego pliku .netrc.

Zobacz commit 786ef50, w 2018 roku, po raz pierwszy w historii, został wybrany do Izby Gmin.
(dodany przez
Junio C Hamano -- gitster -- W commit 017b7c5 , 30 maja 2018)

git-credential-netrc: accept gpg opcja

git-credential-netrc został zakodowany na twardo, aby odszyfrować za pomocą "gpg " niezależnie od gpg.opcja programu.
Jest to problem na dystrybucjach takich jak Debian, które nazywają nowoczesne GnuPG czymś innym, jak 'gpg2'


Instrukcje krok po kroku Dla Windows

Z Windows:

(Git ma gpg.exe w swojej dystrybucji, ale używając pełnej instalacji GPG zawiera gpg-agent.exe, która zapamięta Twoje hasło powiązane z Twoim kluczem GPG.)

  • Zainstaluj gpg4Win Lite, minimalny interfejs wiersza poleceń gnupg (weź najnowsze gpg4win-vanilla-2.X.Y-betaZZ.exe), i uzupełnij swoją ścieżkę za pomocą katalogu instalacyjnego GPG:

    set PATH=%PATH%:C:\path\to\gpg
    copy C:\path\to\gpg\gpg2.exe C:\path\to\gpg\gpg.exe
    

(zwróć uwagę na polecenie ' copy': Git będzie potrzebował skryptu Bash do wykonania polecenia ' gpg'. Ponieważ gpg4win-vanilla-2 pochodzi z gpg2.exe, musisz go zduplikować.)

  • Tworzenie lub importowanie klucza GPG i zaufanie do niego:]}
    gpgp --import aKey
    # or
    gpg --gen-key
    

(upewnij się, aby umieścić hasło do tego klucza.)

  • Trust that klucz

  • Zainstaluj skrypt credential helper w katalogu w twoim %PATH%:

    cd c:\a\fodler\in\your\path
    curl -o c:\prgs\bin\git-credential-netrc https://raw.githubusercontent.com/git/git/master/contrib/credential/netrc/git-credential-netrc.perl
    

(Uwaga: zmiana nazwy skryptu w Git 2.25.x / 2.26, patrz niżej)

(tak, jest to skrypt Bash, ale będzie działał na Windows, ponieważ będzie wywoływany przez Git.)

  • Utwórz plik _netrc w czystym tekście

    machine a_server.corp.com
    login a_login
    password a_password
    protocol https
    
    machine a_server2.corp.com
    login a_login2
    password a_password2
    protocol https
    

(nie zapomnij o części " protocol": "http " lub "https " w zależności od adresu URL użyj.)

  • Zaszyfruj ten plik:

    gpg -e -r a_recipient _netrc
    

(możesz teraz usunąć plik _netrc, zachowując tylko _netrc.gpg zaszyfrowany.)

  • Użyj tego zaszyfrowanego pliku:

    git config --local credential.helper "netrc -f C:/path/to/_netrc.gpg -v"
    

(zwróć uwagę na '/': C:\path\to... to by nie zadziałało.) (Możesz użyć na początku -v -d, aby zobaczyć, co się dzieje.)

Od tej pory każde polecenie Git używające adresu URL HTTP (S), które wymaga uwierzytelnienia, odszyfruje ten plik _netrc.gpg i użyj loginu / hasła powiązanego z serwerem, z którym się kontaktujesz. Po raz pierwszy GPG poprosi Cię o hasło Twojego klucza GPG, aby odszyfrować plik. Innym razem, gpg-agent uruchomiony automatycznie przez pierwsze wywołanie GPG dostarczy hasło dla Ciebie.

W ten sposób możesz zapamiętać kilka adresów URL/loginów/haseł w jednym pliku i zapisać je na dysku zaszyfrowanym.
Uważam, że jest to wygodniejsze niż" cache "helper", gdzie trzeba aby zapamiętać i wpisać (raz na sesję) inne hasło dla każdej z usług zdalnych, aby hasło było buforowane w pamięci.


W Git 2.26 (Q1 2020), przykładowy Pomocnik uwierzytelniania dla użycia .netrc został zaktualizowany do działania po wyjęciu z pudełka. Zobacz patch/dyskusja .

Zobacz commit 6579d93, sprawdź 1c78c78 (20 Dec 2019) przez Denton Liu (Denton-L).
(dodany przez Junio C Hamano -- gitster -- W commit 1fd27f8 , 25 gru 2019)

contrib/credential/netrc: make PERL_PATH konfigurowalny

podpisane przez: Denton Liu

Ścieżka shebang dla interpretera Perla w git-credential-netrc została zakodowana na twardo.
Jednak niektórzy użytkownicy mogą go znaleźć w innym miejscu, a zatem musieliby ręcznie edytować skrypt.

Dodaj prefiks .perl do skryptu oznaczający go jako szablon i zignoruj wygenerowany wersja.
Rozszerza Makefile tak, aby generował git-credential-netrc z git-credential-netrc.perl, tak jak inne skrypty Perla.

Receptury Makefile zostały bezwstydnie skradzione contrib/mw-to-git/Makefile.

I:

Z 2.26 (Q1 2020), przykładowy Pomocnik poświadczenia do użycia .netrc został zaktualizowany do pracy po wyjęciu z pudełka.

Zobacz commit 6579d93, sprawdź 1c78c78 (20 Dec 2019) przez Denton Liu (Denton-L).
(dodany przez Junio C Hamano -- gitster -- in commit 1fd27f8, 25 Dec 2019)

contrib/credential/netrc: praca poza repo

podpisane przez: Denton Liu

Obecnie git-credential-netrc nie działa poza repozytorium git. To nie powiedzie się z następującym błędem:

fatal: Not a git repository: . at /usr/share/perl5/Git.pm line 214.

Nie ma jednak prawdziwego powodu, dla którego musi być w repozytorium. Pomocnicy poświadczeń powinni być w stanie działać dobrze również poza repozytorium.

Call nie-samodzielna wersja config() tak, że git-credential-netrc nie musi być już uruchamiana w repozytorium.

Jeff King (peff) dodaje:

Zakładam, że używasz szyfrowanego gpg netrc (jeśli nie, powinieneś wystarczy użyć credential-store).
Dla hasła "tylko do odczytu" znajduję kombinację pass z takim configiem jest trochę ładniej:

[credential "https://github.com"]
  username = peff
  helper = "!f() { test $1 = get && echo password=`pass github/oauth`; }; f"
 106
Author: VonC,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-03-26 05:06:12

Skorzystaj ze sklepu poświadczeń.

Dla Git 2.11 + na OS X i Linux, użyj Git ' s built in credential store :

git config --global credential.helper libsecret

Dla msysgit 1.7.9 + na Windows :

git config --global credential.helper wincred

Dla Git 1.7.9 + na OS X użyj:

git config --global credential.helper osxkeychain
 46
Author: roo2,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-09-30 09:21:32

Istnieje łatwy, staromodny sposób przechowywania danych uwierzytelniających użytkownika w adresie URL HTTPS:

https://user:[email protected]/...

Możesz zmienić adres URL za pomocą git remote set-url <remote-repo> <URL>

Oczywistym minusem tego podejścia jest to, że musisz zapisać hasło w zwykłym tekście. Nadal możesz wpisać nazwę użytkownika (https://[email protected]/...), co pozwoli Ci zaoszczędzić przynajmniej połowę kłopotów.

Możesz preferować przełączenie na SSH lub użycie oprogramowania klienta GitHub.

 44
Author: wortwart,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-07-10 13:47:09

Możesz po prostu użyć

git config credential.helper store

Gdy następnym razem wpiszesz hasło za pomocą pull lub push, zostanie ono zapisane w pliku .Git-poświadczenia jako zwykły tekst(trochę niezabezpieczony, ale po prostu umieść go w chronionym folderze).

I to wszystko, jak zaznaczono na tej stronie:

git-credential-store

 41
Author: sgoran,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-06-17 13:18:40

Wystarczy podać dane logowania jako część adresu URL:

git remote rm origin
git remote add origin https://username:[email protected]/path/to/repo.git

Uwaga: nie polecam tej metody, ale jeśli się spieszysz i nic więcej nie działa, możesz użyć tej metody.

 24
Author: Tarun Gupta,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-06-17 13:14:39

Nie było dla mnie oczywiste, że najpierw muszę pobrać helpera! Znalazłem poświadczenie.helper Pobierz na Atlassian trwale uwierzytelnia się z repozytoriami Git .

cytat:

Wykonaj następujące kroki, jeśli chcesz używać Git z buforowaniem poświadczeń na OS X:

Pobierz binarny git-credential-osxkeychain.

Uruchom poniższe polecenie, aby upewnić się, że plik binarny jest wykonywalny:

chmod a+x git-credential-osxkeychain

Umieść go w katalogu /usr/local/bin.

Uruchom poniższe polecenie:

git config --global credential.helper osxkeychain
 23
Author: Ben,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-09-30 09:07:28

W konfiguracji GNU / Linux, a~/.netrc też działa całkiem nieźle:

$ cat ~/.netrc
machine github.com login lot105 password howsyafather

Może zależeć od tego, które biblioteki sieciowe Git używa do transportuHTTPS .

 21
Author: helloPiers,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-04-09 20:04:53

Dla Windows możesz użyć wtyczki Git Credential Manager (GCM). Obecnie jest on utrzymywany przez Microsoft. Fajną rzeczą jest to, że zapisuje hasło w sklepie poświadczeń systemu Windows, a nie jako zwykły tekst.

Na stronie releases projektu znajduje się instalator. Spowoduje to również zainstalowanie oficjalnej wersji Git dla Windows z wbudowanym menedżerem poświadczeń. Umożliwia dwuskładnikowe uwierzytelnianie dla GitHub (i innych serwerów). Oraz posiada graficzny interfejs do wstępnego logowania.

Dla użytkowników Cygwin (lub użytkowników już używających oficjalnego Gita Dla Windows), możesz wybrać ręczną instalację. Pobierz pakiet zip ze strony releases . Rozpakuj pakiet, a następnie uruchom plik install.cmd. Zostanie ona zainstalowana w Twoim folderze ~/bin. (Upewnij się, że katalog ~/bin znajduje się w twojej ścieżce.) Następnie konfigurujesz go za pomocą tego polecenia:

git config --global credential.helper manager

Git uruchomi git-credential-manager.exe podczas uwierzytelniania na dowolnym serwerze.

 17
Author: Nadeem Khedr,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-09-30 09:14:04

OAuth

Możesz stworzyć swój własny osobisty token API (OAuth) i używaj go w taki sam sposób, w jaki używasz normalnych danych uwierzytelniających (at: /settings/tokens). Na przykład:

git remote add fork https://[email protected]/foo/bar
git push fork

.netrc

Inną metodą jest skonfigurowanie użytkownika/hasła w ~/.netrc (_netrc na Windows), np.

machine github.com
login USERNAME
password PASSWORD

Dla HTTPS, dodaj dodatkową linię:

protocol https

A credential helper

Do buforuj swoje hasło GitHub w Git podczas korzystania z HTTPS, możesz użyć Pomocnik uwierzytelniający aby Git zapamiętał Twoją nazwę Użytkownika i hasło na GitHub za każdym razem, gdy rozmawia z GitHub.

  • Mac: git config --global credential.helper osxkeychain (osxkeychain helper jest wymagane),
  • Windows: git config --global credential.helper wincred
  • Linux i inne: git config --global credential.helper cache

Powiązane:

 14
Author: kenorb,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-01-08 16:49:47

Jeśli nie chcesz przechowywać hasła w postaci zwykłego tekstu, jak powiedział Mark, możesz użyć innego adresu URL GitHub do pobierania niż do pchania. W pliku konfiguracyjnym, Pod [remote "origin"]:

url = git://github.com/you/projectName.git
pushurl = [email protected]:you/projectName.git

Nadal będzie pytał o hasło, gdy naciskasz, ale nie kiedy pobierasz, przynajmniej w przypadku projektów open source.

 13
Author: MatrixFrog,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-09-30 09:05:27

Po sklonowaniu repozytorium repo możesz edytować repo/.git/config i dodać konfigurację jak poniżej:

[user]
    name = you_name
    password = you_password
[credential]
    helper = store

Wtedy nie zostaniesz poproszony o username i password ponownie.

 11
Author: Xiaorong Liao,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-06-17 13:19:13

Możesz użyć pomocników poświadczeń.

git config --global credential.helper 'cache --timeout=x'

Gdzie x jest liczbą sekund.

 9
Author: Charan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-09-09 16:00:35

Wiem, że nie jest to bezpieczne rozwiązanie, ale czasami potrzebujesz tylko prostego rozwiązania-bez instalowania czegokolwiek innego. A ponieważ helper = store nie działa dla mnie, stworzyłem atrapę helpera:

Utwórz skrypt i umieść go w folderze users bin o nazwie credfake , ten skrypt poda Twoją nazwę użytkownika i hasło:

#!/bin/bash
while read line
do
  echo "$line"
done < "/dev/stdin"
echo username=mahuser
echo password=MahSecret12345

Make it executable:

chmod u+x /home/mahuser/bin/credfake

Następnie skonfiguruj go w git:

git config --global credential.helper /home/mahuser/bin/credfake

(lub użyj go bez -- global dla tylko jeden repo)

I - voilá-git użyje tego użytkownika + hasło.

 9
Author: bebbo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-06-18 14:47:32

Token uwierzytelniania powinien być używany zamiast hasła do konta. Przejdź do GitHub settings/applications, a następnie utwórz osobisty token dostępu. Token może być używany w ten sam sposób, w jaki używane jest hasło.

Token ma pozwolić użytkownikom nie używać hasła do konta w pracy nad projektem. Używaj hasła tylko podczas prac administracyjnych, takich jak tworzenie nowych tokenów lub odwoływanie starych tokenów.


Zamiast tokenu lub hasła, które dają użytkownikowi pełny dostęp do Githuba konto, klucz wdrożenia specyficzny dla projektu może być użyty do przyznania dostępu do pojedynczego repozytorium projektu. Projekt Git może być skonfigurowany tak, aby używać tego innego klucza w następujących krokach, gdy nadal możesz uzyskać dostęp do innych kont Git lub projektów z normalnym poświadczeniem:

  1. zapisanie pliku konfiguracyjnego SSH, który zawiera Host, IdentityFile dla klucza wdrożenia, może UserKnownHostsFile, a może User (choć myślę, że go nie potrzebujesz).
  2. napisz skrypt powłoki SSH wrapper to praktycznie jest ssh -F /path/to/your/config $*
  3. Prepend GIT_SSH=/path/to/your/wrapper przed twoim zwykłym poleceniem Git. Tutaj git remote (origin) musi używać formatu [email protected]:user/project.git.
 7
Author: minghua,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-04-09 20:20:56

Lepiej jest użyć poświadczeń dla bezpieczeństwa, ale można je zachować przez jakiś czas za pomocą pamięci podręcznej:

git config --global credential.helper cache
git config credential.helper 'cache --timeout=3600'

Twoje dane uwierzytelniające zostaną zapisane na 3600 sekund.

 7
Author: Sarvar Nishonboev,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-09-30 09:17:30

Zazwyczaj masz zdalny URL, coś takiego,

git remote -v

origin    https://gitlab.com/username/Repo.git (fetch)
origin    https://gitlab.com/username/Repo.git (push)

Jeśli chcesz pominąć nazwę użytkownika i hasło podczas korzystania z git push, Spróbuj tego:

 git remote set-url origin https://username:[email protected]/username/Repo.git

Właśnie dodałem ten sam adres URL (z danymi użytkownika, w tym hasłem) do origin.

Uwaga: nie działa, jeśli nazwa użytkownika jest identyfikatorem e-mail.

git remote -v

origin    https://username:[email protected]/username/Repo.git (fetch)
origin    https://username:[email protected]/username/Repo.git (push)
 6
Author: Nayagam,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-06-17 13:48:31

Jest trochę inaczej, jeśli używasz uwierzytelniania dwuskładnikowego tak jak ja. Ponieważ nie znalazłem dobrej odpowiedzi gdzie indziej, wsadzę jedną tutaj, żeby być może później ją znaleźć.

Jeśli używasz uwierzytelniania dwuskładnikowego, podanie nazwy użytkownika/hasła nawet nie zadziała - otrzymasz odmowę dostępu. Ale możesz użyć tokena dostępu do aplikacji i użyć pomocnika poświadczeń Git do buforowania tego za Ciebie. Oto odnośne linki:

I nie pamiętam, gdzie to widziałem, ale gdy zostaniesz poproszony o nazwę użytkownika-to tam przyklejasz token dostępu do aplikacji. Następnie pozostaw hasło puste. Zadziałało na moim Macu.

 5
Author: JnBrymn,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-04-09 20:25:28

To działa dla mnie używam Windows 10

git config --global credential.helper wincred
 4
Author: Mostafa Nawara,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-07-02 19:05:37

Dostałem odpowiedź od strona podręcznika gitcredentials(7) . W moim przypadku nie mam credential-cache w instalacji systemu Windows; używam credential-store.

Po użyciu credential-store, nazwa użytkownika / Hasło są przechowywane w folderze [user]/.plik Git-credities. Aby usunąć nazwę użytkownika/hasło, po prostu usuń zawartość pliku.

 3
Author: Mike Lin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-04-09 20:13:28

Edytujesz również plik bashrc i dodajesz do niego skrypt.

To zapyta o Twoje hasło raz, gdy uruchomisz Gita, a następnie zapamięta je, dopóki się nie wylogujesz.

SSH_ENV=$HOME/.ssh/environment
  
# Start the ssh-agent
function start_agent {
    echo "Initializing new SSH agent..."

    # Spawn ssh-agent
    /usr/bin/ssh-agent | sed 's/^echo/#echo/' > "${SSH_ENV}"
    echo succeeded
    chmod 600 "${SSH_ENV}"
    . "${SSH_ENV}" > /dev/null
    /usr/bin/ssh-add
}
  
if [ -f "${SSH_ENV}" ]; then
     . "${SSH_ENV}" > /dev/null
   ps -ef | grep ${SSH_AGENT_PID} | grep ssh-agent$ > /dev/null || {
      start_agent;
  }
else
    start_agent;
fi
 3
Author: ThePatelGuy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-09-30 09:28:04

Dokumentacja composera wspomina , że możesz uniemożliwić mu korzystanie z GitHub API, tak aby działał jak git clone:

Jeśli ustawisz klucz no-api na true w repozytorium GitHub, sklonuje ono repozytorium tak, jak w przypadku każdego innego repozytorium GitHub, zamiast używać GitHub API. Ale w przeciwieństwie do bezpośredniego używania sterownika git, composer nadal będzie próbował użyć plików zip Githuba.

Więc sekcja wyglądałaby tak:

"repositories": [
    {
        "type": "vcs",
        "no-api": true,
        "url": "https://github.com/your/repo"
    }
],

Pamiętaj że API istnieje nie bez powodu. Tak więc powinna to być metoda ostateczności w odniesieniu do zwiększonego obciążenia na github.com.

 2
Author: sebastianwagner,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-04-09 20:22:14

Jeśli używasz osxkeychain i wygasł token i chcesz go zaktualizować, wykonaj następujące kroki:

Uruchom w terminalu, a następnie naciśnij enter dwukrotnie.

git credential-osxkeychain erase
 host=github.com
 protocol=https

Teraz powinieneś zostać poproszony o podanie nazwy użytkownika/hasła. Jednak czasami wydaje się, że to nie "trwa" i trzeba ponownie wejść.

Jeśli tak, uruchom ponownie komputer. Teraz przy następnym uruchomieniu polecenia git i wpisaniu nazwy użytkownika/hasła, zostanie ono zapisane.

 0
Author: Andrew Schreiber,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-12-14 01:29:34