Klonowanie prywatnego repozytorium Github

226

Mam prywatne repozytorium w Github dla projektu, nad którym pracuję. Do tej pory pracowałem tylko na domowym pulpicie, ale właśnie kupiłem laptopa i próbuję go skonfigurować, aby móc pracować nad projektem z dowolnego komputera i zmieniać zmiany w trybie push / pull.

Dodałem nowy klucz SSH do mojego konta Github na laptopie i udało mi się sklonować i wprowadzić zmiany w skonfigurowanym publicznym repozytorium testowym. Nie udało mi się jednak sklonować prywatnego repozytorium. Czy jest coś specjalnego, co muszę zrobić w wierszu polecenia, aby sklonować prywatne repozytorium? Czy muszę założyć nowe konto GitHub na moim laptopie i skonfigurować się jako współpracownik?

Poleceniem, którego użyłem, było git clone git://github.com/myusername/reponame.git

Salomon
źródło
3
Jakiego polecenia użyłeś, aby lokalnie sklonować prywatne repozytorium? Jakie masz błędy?
Ron DeVera

Odpowiedzi:

171

Prywatne sklonowane adresy URL mają formę [email protected]:username/repo.git- być może trzeba było użyć git@zamiast git://?

git:// Adresy URL są tylko do odczytu i wygląda na to, że prywatne repo nie pozwalają na tę formę dostępu.

prochowiec
źródło
Tak - użycie „[email protected]:” zamiast „https: //” rozwiązało mój problem! Właściwie włączyłem 2FA w tym samym czasie, ale to nie miało z tym nic wspólnego.
leo
148

To działało dla mnie:

git clone https://[email protected]/username/repo_name

Było to oczywiście po dodaniu mojego klucza SSH do Github . Użyłem tego na serwerze CentOs, jeśli to konieczne.

Charlchad
źródło
4
dzięki za to. Ale nie wiem, dlaczego to działa. Nigdy nie monitowano o hasło. Czy git powinien klonować przez https w jakikolwiek sposób dotykać moich klawiszy ssh? Myślałem, że nie.
reinhardt
1
Fajnie, dzięki temu mogłem pobrać prywatne repozytorium na Ubuntu.
Nino Škopac,
Dlaczego to działa, ale [email protected]: nazwa użytkownika / repo.git nie?
diimdeep
@diimdeep Git i inne narzędzia często używają protokołu git: do uzyskiwania dostępu do plików w zdalnych repozytoriach. Niektóre konfiguracje zapory blokują adresy URL git: //, co prowadzi do błędów podczas próby klonowania repozytoriów lub pobierania zależności. (Na przykład zapory korporacyjne „notorycznie” blokują git:). Jeśli napotkasz ten problem, możesz wymusić użycie https: zamiast tego, uruchamiając następującą komendę: git config --global url. ”Https: // ".insteadOf git: //
charlchad
1
W niektórych przypadkach, jeśli zostaniesz poproszony o podanie hasła, a następnie odmowa dostępu, może to oznaczać, że musisz podać „osobisty token dostępu” zamiast hasła logowania do GitHub. [1] help.github.com/articles/which-remote-url-should-i-use [2] help.github.com/articles/…
David Winiecki
71

To działało dla mnie:

git clone https://username:[email protected]/username/repo_name.git
izik f
źródło
5
jest to problematyczne w przypadku haseł znaków specjalnych, pozostawia twoje hasło w logach i wydaje się, że już nie działa
pcnate
5
Spróbuj tego - pojawi się monit o podanie hasła do konta. Nie martw się hasłem przechodzącym do historii lub dzienników. git clone https://[email protected]/username/repo_name.git
Vinay,
64

Spotkałem się z tym problemem kilka razy i za każdym razem, gdy trafiłem na tę stronę, próbowałem wszystkiego i nie udało mi się!

To dlatego, że mam włączone 2FA !!!

Według https://help.github.com/articles/which-remote-url-should-i-use/#when-2fa-is-enabled

Jeśli włączyłeś  uwierzytelnianie dwuskładnikowe lub uzyskujesz dostęp do organizacji korzystającej z  pojedynczego logowania SAML , musisz  podać osobisty token dostępu  zamiast wpisywać hasło do HTTPS Git.

  1. Kliknij ten link i utwórz token dostępu
  2. git clone https://github.com/username/repo_name.git (Domyślny link repozytorium git jest wystarczająco dobry!)
  3. Wpisz swoją nazwę użytkownika i użyj tokena dostępu jako hasła !!

Aktualizacja:

  • Jeśli nie masz nic przeciwko odsłonięciu tokena dostępu w wierszu polecenia, możesz również wkleić token dostępu jako nazwę użytkownika, a następnie nacisnąć enter enter (bez hasła).
  • Nienawidzisz kopiować i wklejać token dostępu w kółko?
    Użyj git config credential.helper store(nie rób tego na maszynie, której nie ufasz)
lzl124631x
źródło
Jeśli korzystasz z systemu Windows, możesz zainstalować github.com/microsoft/Git-Credential-Manager-for-Windows. Następnie podczas klonowania prywatnego repozytorium pojawi się okno interfejsu użytkownika z logowaniem do Github. Pozwoli to również wypełnić kod 2FA. Twoje dane logowania do Github będą bezpiecznie przechowywane.
Jirik,
18

Korzystając z Git dla Windows, łatwiej jest użyć adresu URL HTTPS.

Następnie otwórz git shell git clone https://github.com/user/repo. Po wyświetleniu monitu wprowadź nazwę użytkownika i hasło. Nie trzeba konfigurować klucza SSH.

Gustavo Coelho
źródło
1
Zgadzam się z prostotą, że nie muszę konfigurować ssh
Félix Gagnon-Grenier
Zgadzam się z innymi komentarzami, po prostu użycie adresu HTTPS działa idealnie w systemie Windows lub Ubuntu (wypróbowano 116.04)
greg_data
18

Dla mnie rozwiązaniem było:

git clone https://[email protected]

Tutaj musisz być właścicielem repozytorium, ale jeśli tak nie jest, będzie działać jak

git clone https://[email protected]/ownersusername/repo_name.git

Jeśli tak,2FA enabled to:

  1. Przejdź do ustawień z ikony profilu w prawym górnym rogu lub odwiedź https://github.com/settings/profile
  2. Przejdź do dolnej karty lub przejdź do https://github.com/settings/tokens
  3. Otwórz ostatnią kartę tutaj. Tokeny osobiste. I wygeneruj token
  4. Skopiuj token i uruchom git clone https://[email protected]

Gdy pojawi się monit o hasło, umieść ten token tutaj. Obraz generowania tokena tutaj

Czarna Mamba
źródło
1
wygląda jak git wyświetla monit o
podanie
8

Mam włączone konto firmowe (prywatne) i uwierzytelnianie 2-czynnikowe, więc musiałem połączyć kilka postów, aby działało jak poniżej. (Zapisywanie w dół, aby mogło być przydatne dla kogoś w tej samej sytuacji)

Initially it was the Fatal Error. 
fatal: repository 'https:
...
remote: Repository not found.
fatal: repository 'https:

Zainstalowałem menedżera poświadczeń i zaktualizowałem GIT, jak wspomniano tutaj: https://codeshare.co.uk/blog/how-to-solve-the-github-error-fatal-httprequestexception-encountered/

To nie rozwiązało problemu, ponieważ problem przeniósł się na niżej, gdy próbowałem użyć polecenia klonowania w następujący sposób:

$ git clone https://<username>:<password>@github.com/<ORG_NAME>/<PROJECT-NAME>.git

remote: Invalid username or password.
fatal: Authentication failed for 'https://

Moje hasło zawierało symbol $ iz jakiegoś powodu linia poleceń GIT / GIT Bash mi się nie podobało. Widzę to na zwrócony tekst błędu nie zawierał symbolu $.

fatal: Authentication failed for 'https://<username>:<password-missing-$-symbol>@github.com/<ORG_NAME>/<PROJECT-NAME>.git'

Musiałem odwoływać się do tej witryny: https://git-scm.com/book/en/v2/Git-Tools-Credential-Storage

Uwaga: jeśli niepoprawne hasło zostanie zapisane na koncie w Menedżerze poświadczeń systemu Windows , przyczyni się to również do powstania problemu. Przed przejściem do kroku poniżej usunąłem dane logowania github przechowywane w ten sposób.

$ git config --global credential.helper cache
$ git clone https://<username>:<password>@github.com/<ORG_NAME>/<PROJECT-NAME>.git

Teraz wyskoczył menedżer poświadczeń systemu Windows. Wpisałem nazwę użytkownika i hasło w polach tekstowych (to zaakceptowało moje hasło, które miało symbol $) i poprosiło mnie o podanie kodu 2-Factor Authentication. Wpisałem kod uwierzytelniający z Google Authenticator, a klon zaczął się idealnie.

jeden Świat
źródło
Symbol dolara $jest zastrzeżoną postacią w Uniksie. Oznacza początek pobierania wartości zmiennej o nazwie równej ciągowi znaków po $symbolu.
Let Me Tink About It
Usunięcie poświadczeń systemu Windows rozwiązało problem.
Michael Larionov
6

Klonując z prywatnych repozytoriów z włączoną funkcją 2FA, musisz wykonać proste kroki

  1. Przejdź do swojego konta Git
  2. Przejdź do Ustawienia-> Ustawienia programisty-> Osobisty token dostępu
  3. Kliknij Wygeneruj nowy token
  4. Utwórz token z żądanym tytułem i funkcjami
  5. Podczas klonowania prywatnego repozytorium, używając git clone repoName, po wprowadzeniu nazwy użytkownika podaj osobisty token dostępu jako hasło.

Wykonaj te same czynności, gdy pojawi się komunikat o błędzie Uwierzytelnianie dla prywatnego repozytorium

ireshika piyumalie
źródło
5

W odpowiedzi na odpowiedź Mac, można uzyskać dostęp do SSH klonowania adresu URL w GitHub repo stronę, klikając SSHna You can clone with HTTPS, SSH, or Subversion.i skopiuj URL.

MK Yung
źródło
4

To działało dla mnie na Macu git clone https://[email protected]:username/repo_name

Usman Hussain
źródło
3

Oprócz odpowiedzi MK Yunga: upewnij się, że dodajesz klucz publiczny do każdego miejsca, w którym wdrażasz, do kluczy wdrażania dla repozytorium, jeśli nie chcesz otrzymywać odpowiedzi 403 Forbidden.

pgcd
źródło
3

Najpierw upewnij się, że masz klucz SSH lub wygeneruj go na: https://help.github.com/articles/generating-ssh-keys/

Po otrzymaniu klucza musisz dodać go do konta github pod adresem : https://github.com/settings/ssh

Użytkownicy systemu Windows powinni uruchomić git bash jako administrator.

Teraz klonowanie powinno działać w przypadku prywatnych repozytoriów (repo), bez konieczności podawania nazwy użytkownika i hasła.

gcamargo
źródło
1

Jeśli nowo używany komputer ma inne dane uwierzytelniające, uruchom tę komendę

klon git https://github.com/username/reponame.git

bezpośrednio nie będzie działać. Git spróbuje użyć zapisanych poświadczeń i nie poprosi o podanie nazwy użytkownika i hasła. Ponieważ niezgodność poświadczeń jest niezgodna, git zostanie wypisany, Repository not founda operacja klonowania zakończy się niepowodzeniem. Sposób, w jaki to rozwiązałem, polegał na usunięciu starych poświadczeń, ponieważ już ich nie używam, ponownie uruchomiłem wyżej wspomniane polecenie i wprowadziłem wymaganą nazwę użytkownika i hasło oraz sklonowałem prywatne repozytorium.

Amjad
źródło
1

1) spróbuj uruchomić polecenie z nazwą użytkownika i hasłem w poniższym formacie

git clone https://your_username:[email protected]/username/reponame.git

teraz problem, o którym wspominali inni, dotyczy tego, że w haśle mamy znak specjalny. W JavaScript użyj poniższego kodu do konwersji hasła ze znakami specjalnymi na kodowanie UTF-8.

console.log(encodeURIComponent('password@$123'));

teraz użyj wygenerowanego hasła zamiast hasła ze znakami specjalnymi i uruchom polecenie.

Mam nadzieję, że to rozwiązanie problemu.

Santosh Kadam
źródło
0

Dodaj swój klucz publiczny ssh na pulpicie w github.

https://github.com/settings/keys

Możesz sklonować repozytorium bez żadnego hasła.

Kishore Relangi
źródło
0

Jeśli masz pewność, że nie masz włączonej funkcji 2FA, masz uprawnienia dostępu do repozytorium, a repozytorium istnieje, możliwe, że twój [email protected] jest zalogowany przy użyciu innego konta.

aby sprawdzić, czy dasz radę

ssh -T [email protected]

Jeśli pokazuje inne konto, aby rozwiązać ten problem:

 ssh-add -D
 ssh-add ~/.ssh/your_rsa
 ssh -T [email protected]
 git clone [email protected]:<owner_name>/<repo_name>.git
Kexin Lu
źródło
Pokazuje on: unknown option -T. Moja wersja git to2.7.4
bvdb
@bvdb przepraszam, powinno byćssh -T [email protected]
Kexin Lu
0

Jeśli chcesz to osiągnąć Dockerfile, poniżej linii pomaga.

ARG git_personal_token
RUN git config --global url."https://${git_personal_token}:@github.com/".insteadOf "https://github.com/"
RUN git clone https://github.com/your/project.git /project

Następnie możemy zbudować z poniższym argumentem.

docker build --build-arg git_personal_token={your_token} .
Youngjae
źródło
0
git clone https://myusername:[email protected]/myusername/project.git

Gdy próbujesz użyć prywatnego repozytorium z repozytorium, musisz podać nazwę użytkownika i hasło.

divya_kanak
źródło
To nie jest bezpieczne. Sklonowane repozytorium przechowuje podany link http w pliku .git / config. Wszystkie zatwierdzenia dokonane w lokalnym repozytorium mogą być przekazane do zdalnego bez konieczności podawania nazwy użytkownika i hasła. Co jest naprawdę niebezpieczne, jeśli nie jesteś jedynym użytkownikiem !!
Tian