GIT zobowiązuje się jako inny użytkownik bez adresu e-mail / lub tylko e-maila


127

Próbuję wprowadzić zmiany jako inny użytkownik, ale nie mam prawidłowego adresu e-mail, następujące polecenie nie działa dla mnie:

git commit --author="john doe" -m "some fix"
fatal: No existing author found with 'john doe'

Mam ten sam problem, gdy próbuję zatwierdzić tylko za pomocą adresu e-mail

git commit --author="john@doe.com" -m "some fix"
fatal: No existing author found with 'john@doe.com'

Na stronach podręcznika GIT dla polecenia commita jest napisane, że mogę użyć

standard A U Thor <author@example.com> format

W przypadku opcji --author.

Gdzie jest zdefiniowany ten format? co oznacza A i U? jak mogę zobowiązać się do innego użytkownika, który ma tylko nazwę użytkownika lub tylko adres e-mail?


3
AU nie oznacza niczego, to tylko przykład: AU Thor => AUThor => Autor . Możesz określić dowolną nazwę jako nazwę.
Samy Dindane,

1
Wiem, że AU Thor tworzy Autora, zastanawiałem się, czy separacja ma jakieś znaczenie.
Willem D'Haeseleer,

Odpowiedzi:


142

Minimalny wymagany format autora, jak wskazano w tej odpowiedzi SO , to

Name <email>

W twoim przypadku oznacza to, że chcesz pisać

git commit --author="Name <email>" -m "whatever"

Komentarz Willema D'Haeseleera, jeśli nie masz adresu e-mail, możesz użyć <>:

git commit --author="Name <>" -m "whatever"

Jak napisano na git commitstronie podręcznika , do której utworzyłeś link, jeśli podasz coś mniejszego, jest on używany jako token wyszukiwania do przeszukiwania poprzednich zatwierdzeń, szukając innych zatwierdzeń tego autora.


28
Właśnie się dowiedziałem, że jeśli nie masz adresu e-mail, możesz po prostu wpisać „imię <>”, aby wyraźnie zostawić je puste, zamiast wpisywać fałszywy.
Willem D'Haeseleer,

2
Jeśli użyjesz "name <>"i git commit --amendpóźniej, zakończy się to invalid identbłędem; więc po prostu nie rób tego
sanmai

7
Najwyraźniej nawet jeśli używasz tej opcji, nadal musisz ustawić user.email i user.name w konfiguracji git, w przeciwnym razie git narzeka.
qwertzguy

51

Konkretny format to:

git commit --author="John Doe <john@doe.com>" -m "Impersonation is evil." 

1
Dlaczego nie wymaga hasła Johna Doe, jeśli zobowiązujesz się do jego imienia?
Narek

3
@Narek Co by to było w tym kontekście?
pmr

37

Plik

standardowy format AU Thor <autor@example.com>

Wydaje się być zdefiniowane w następujący sposób: (o ile wiem, bez żadnej gwarancji)

AU Thor = wymagana nazwa użytkownika

  • Oddzielenie znaków prawdopodobnie wskazuje, że spacje są dozwolone, może też przypominać inicjały.
  • Po nazwie użytkownika musi następować 1 spacja, dodatkowe spacje zostaną obcięte

<author@example.com> = opcjonalny adres e-mail

  • Musi zawsze znajdować się między znakami <>.
  • Format adresu e-mail nie jest zweryfikowany, możesz wprowadzić wszystko, co chcesz
  • Opcjonalnie możesz to jawnie pominąć, używając <>

Jeśli nie użyjesz tej dokładnej składni, git przeszuka istniejące zatwierdzenia i użyje pierwszego zatwierdzenia zawierającego podany ciąg.

Przykłady:

  1. Tylko nazwa użytkownika

    Pomiń wyraźnie adres e-mail:

    git commit --author="John Doe <>" -m "Impersonation is evil."
    
  2. Tylko e-mail

    Technicznie nie jest to możliwe. Możesz jednak wpisać adres e-mail jako nazwę użytkownika i wyraźnie pominąć adres e-mail. To nie wydaje się być bardzo przydatne. Myślę, że jeszcze bardziej sensowne byłoby wyodrębnienie nazwy użytkownika z adresu e-mail, a następnie użycie jej jako nazwy użytkownika. Ale jeśli musisz:

    git commit --author="john@doe.com <>" -m "Impersonation is evil." 
    

Wpadłem na to, próbując przekonwertować repozytorium z mercurial na git. Przetestowałem polecenia w msysgit 1.7.10.


13

Wystarczy uzupełnić :

git commit --author = "john@doe.com" -m "Podszywanie się jest złe."

W niektórych przypadkach zatwierdzenie nadal kończy się niepowodzeniem i wyświetla następujący komunikat:

*** Proszę, powiedz mi, kim jesteś.

Biegać

git config --global user.email "ty@example.com" git config --global nazwa.użytkownika "Twoje imię"

aby ustawić domyślną tożsamość konta. Pomiń --global, aby ustawić tożsamość tylko w tym repozytorium.

fatal: nie można automatycznie wykryć adresu e-mail (otrzymano xxxx)

Po prostu uruchom „git config”, a następnie „git commit”


To jest to, czego potrzebowałem. Mam oddzielną nazwę użytkownika i adres e-mail dla firmowego GitHuba i publicznego GitHuba. Musiałem ustawić moje obecne repozytorium, aby korzystało z mojej publicznej nazwy użytkownika i adresu e-mail GitHub, aby móc przesyłać zmiany bez ujawniania prywatnego e-maila.
TBirkulosis,

8

Format

A U Thor <author@example.com>

po prostu oznacza, że ​​należy określić

FirstName MiddleName LastName <email@example.com>

Wygląda na to, że drugie imię i nazwisko są opcjonalne (być może część przed e-mailem nie ma żadnego ścisłego formatu). Spróbuj na przykład tego:

git commit --author="John <john@doe.com>" -m "some fix"

Jak mówią doktorzy:

  --author=<author>
       Override the commit author. Specify an explicit author using the standard 
       A U Thor <author@example.com> format. Otherwise <author> is assumed to 
       be a pattern and is used to search for an existing commit by that author 
       (i.e. rev-list --all -i --author=<author>); the commit author is then copied 
       from the first such commit found.

jeśli nie używasz tego formatu, git traktuje podany łańcuch jako wzorzec i próbuje znaleźć pasującą nazwę wśród autorów innych zatwierdzeń.


Nie ma czegoś takiego jak FirstName MiddleName LastName . Zobacz to .
Samy Dindane

3

Ta --authoropcja nie działa:

*** Please tell me who you are.

Run

  git config --global user.email "you@example.com"
  git config --global user.name "Your Name"

To robi:

git -c user.name='A U Thor' -c user.email=author@example.com commit

To jedyny, który działał dla mnie. Zwróć uwagę, że kolejność jest ważna. git commit -c user.name="j bloggs" -am "message"daje błądfatal: Option -m cannot be combined with -c/-C/-F
Martin

2

Otwórz Git Bash.

Ustaw nazwę użytkownika Git:

$ git config --global user.name "name family" Upewnij się, że poprawnie ustawiłeś nazwę użytkownika Git:

$ git config --global nazwa.użytkownika

imię rodziny

Ustaw adres e-mail Git:

$ git config --global user.email email@foo.com Potwierdź, że poprawnie ustawiłeś adres e-mail Git:

$ git config --global user.email

email@foo.com


0

Wszystko zależy od tego, jak się zaangażujesz.

Na przykład:

git commit -am "Some message"

użyje Twojej ~\.gitconfignazwy użytkownika. Innymi słowy, jeśli otworzysz ten plik, powinieneś zobaczyć linię, która wygląda następująco:

[user]
    email = someemail@gmail.com

To byłby adres e-mail, który chcesz zmienić. Jeśli wykonujesz żądanie ściągnięcia za pośrednictwem Bitbucket lub Github itp., Będziesz tym, kim jesteś zalogowany.


0

Alternatywa jeśli problemem jest to, aby ukryć prawdziwy adres e-mail ... Jeśli zobowiązując się do Github nie trzeba prawdziwy e-mail można użyć<username>@users.noreply.github.com

Niezależnie od tego, czy korzystasz z Githuba, czy nie, prawdopodobnie najpierw chcesz zmienić dane swojego autora (w systemie Windows SET GIT_...)

GIT_COMMITTER_NAME='username' 
GIT_COMMITTER_EMAIL='username@users.noreply.github.com'

Następnie ustaw autora

git commit --author="username <username@users.noreply.github.com>"

https://help.github.com/articles/keeping-your-email-address-private


W przeciwieństwie do wszystkich innych rozwiązań, działa to, gdy początkowo nie zainicjowałeś user.email/user.name.
Andy

-2

Uruchom te dwa polecenia z terminala, aby ustawić adres e-mail użytkownika i nazwę

 git config --global user.email "you@example.com" 

 git config --global user.name "your name" 
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.