Jak zmienić użytkownika git na terminalu?

46

Próbuję wypchnąć projekt do zdalnego repozytorium z wiersza polecenia.

Wewnątrz mojego lokalnego katalogu uderzyłem:

$ git push

i uzyskaj następujący błąd:

zdalne: Odmowa dostępu do nazwy użytkownika 1 / repo.git dla nazwy użytkownika 2.
krytyczny: nie można uzyskać dostępu do „ https://github.com/username1/repo.git/ ”:
Żądany adres URL zwrócił błąd: 403

Gdzie username1jest moja nazwa użytkownika konta github, na którym znajduje się repozytorium, na które chcę wysłać i username2jest to stare konto, którego używałem na tym komputerze.

Używam OS X Yosemite (10.10.5) na Macbooku Air. I wolałbym używać https zamiast ssh .

Jak zaktualizować, aby username1móc z powodzeniem przesyłać do mojego pilota?

Edycja: Dla jasności nie mówię o zwykłej edycji config userobiektu, np.

$ git config --global user.name "Billy Everyteen"
$ git config --global user.email "[email protected]"

Nie mają one nic wspólnego z uwierzytelnianiem. Moje pytanie dotyczy uwierzytelnienia użytkownika niezbędnego do napisania w moim zdalnym repozytorium.

Kosiarka
źródło
Dzięki. Ale to dotyczy tylko ustawienia nazwy użytkownika. Brak uwierzytelnienia. Innymi słowy, ta dokumentacja pokazuje nam, jak powiązać nazwisko tego, kto otrzymuje kredyt za zatwierdzenia. Ale tak naprawdę nie upoważnia użytkownika do wypychania zatwierdzeń.
Mowzer
1
Możesz być w stanie go zmienić za pomocą polecenia udokumentowanego na git-scm.com/docs/gitcredentials . Ewentualnie, jeśli chcesz wyczyścić poświadczeń, można spojrzeć na to pytanie stackoverflow.com/questions/15381198/... .
Jan
To nie rozwiązuje problemu!
Mihail Salari,
co jeśli nie chcę zmieniać lokalnych ustawień git?
Arkady

Odpowiedzi:

42

Oprócz zmiany nazwy użytkownika i adresu e-mail z terminala za pomocą git config:

$ git config --global user.name "Bob"
$ git config --global user.email "[email protected]"

musisz usunąć informacje o autoryzacji z pęku kluczy. Z tym też zmagałem się, dopóki nie dowiedziałem się, że mam również certyfikat w pęku kluczy.

Otwórz dostęp do pęku kluczy, kliknij Wszystkie elementy i wyszukaj git. Otrzymasz kilka takich przedmiotów:

Zrzut ekranu

Usuń ich. Teraz spróbuj wypchnąć repozytorium, a git poprosi cię o wpisanie hasła dla użytkownika, a będziesz gotowy.

Powiedział Sikira
źródło
1
Co z użytkownikami systemu Windows?
Aks ..
2
Mam wiele kont, co powinienem zrobić
Amerrnath,
Mam ten sam problem z Win7. Nie jestem pewien, jakie jest rozwiązanie :(
Fiddle Freak
22

Dla użytkowników cli, po prostu użyj tego: git config credential.username 'Billy Everytee'

Jackman
źródło
Musisz tymczasowo wyłączyć 2FA.
bbaassssiiee
10

Dla użytkownika systemu Windows:
Postępuj zgodnie z instrukcjami:
Panel sterowania >> Konto użytkownika >> Menedżer poświadczeń >> Poświadczenie systemu Windows >> Poświadczenie ogólne

usuń dane uwierzytelniające git.
następnym razem, gdy będziesz wypychać repozytorium, poprosi Cię o poświadczenie.
Odwołaj się do odniesienia, aby uzyskać szczegółowe wyjaśnienie

Shubham Chadokar
źródło
Dziękuję Ci! Właśnie tego szukałem w systemie Windows.
JCF
@JCF Witamy! Cieszę się, że to pomogło!
Shubham Chadokar
6

Podaj swoją konfigurację git.

git config --list

Zmień nazwę użytkownika i adres e-mail na całym świecie

git config --global user.name "Nanhe Kumar"
git config --global user.email "[email protected]"

Zmień nazwę użytkownika i adres e-mail dla bieżącego repo

git config  user.name "Nanhe Kumar"
git config  user.email "[email protected]"

Zmień adres URL repozytorium, jeśli korzystasz z bitu wiadra.

nano .git/config

Ten plik będzie mniej więcej taki. [core] repositoryformatversion = 0 fileMode = false bare = false logallrefupdates = true ignorecase = true precomposeunicode = true [remote "origin"] url = https://[email protected]/nanhekumar/myproject.git fetch = +refs/heads/*:refs/remotes/origin/* [branch "master"] remote = origin merge = refs/heads/master

[user]
        name = Nanhe Kumar
        email = [email protected]
Nanhe Kumar
źródło
To najdokładniejsza odpowiedź, biorąc pod uwagę globalny i lokalny zakres repo.
Jordan Stefanelli