2012-07-20 8 views
84

próbuję popełnić pewne zmiany jako inny użytkownik, ale nie mam poprawny adres e-mail, następujące polecenie nie działa dla mnie:git commit jako inny użytkownik bez email/lub e-mail tylko

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

mam ten sam problem, gdy próbuje popełnić tylko z adresu e-mail

git commit --author="[email protected]" -m "some fix" 
fatal: No existing author found with '[email protected]' 

na stronach git człowiek dla polecenia popełnienia mówi mogę użyć

standard A U Thor <[email protected]> format 

Dla opcji --author.

Gdzie jest zdefiniowany ten format? co oznaczają A i U? jak dokonać zatwierdzenia dla innego użytkownika z tylko nazwą użytkownika lub tylko e-mailem?

+1

* AU * nie stać na nic, to tylko przykład: * AU Thor * => * Autor * => * Autor * . Możesz określić, co chcesz jako imię. –

+1

Wiem, że A U Thor tworzy Autor, zastanawiałem się, czy w separacji było jakieś znaczenie. –

+0

Nie, jest. –

Odpowiedz

22

średnia U Thor < autor @ przykład.com > Format

wydaje się być zdefiniowany następująco: (o ile wiem, bez żadnej gwarancji)

AU Thor = wymagane nazwę użytkownika

  • Wydzielenie z znaki prawdopodobnie wskazuje, że spacje są dozwolone, może również przypominać inicjały.
  • Nazwa użytkownika musi zostać następnie 1 miejsca, dodatkowe przestrzenie będą obcinane

<[email protected]> = adres e-mail opcjonalny

  • musi być zawsze między < > znaków .
  • Format adresu e-mail nie zostanie zatwierdzone, można bardzo dużo wpisać cokolwiek chcesz
  • Opcjonalnie, można pominąć ten wyraźnie za pomocą <>

Jeśli nie używasz dokładnie tej składni, git przeszuka istniejące zatwierdzenia i użyje pierwszego zatwierdzenia zawierającego twój podany ciąg.

Przykłady:

  1. Tylko nazwa użytkownika

    Omit adres e-mail wyraźnie:

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

    Technicznie nie jest to możliwe. Możesz jednak podać adres e-mail jako nazwę użytkownika i wyraźnie pominąć adres e-mail. To nie wydaje się być bardzo przydatne. Myślę, że byłoby jeszcze więcej sensu wyodrębnić nazwę użytkownika z adresu e-mail, a następnie użyć go jako nazwy użytkownika. Ale jeśli masz do:

    git commit --author="[email protected] <>" -m "Impersonation is evil." 
    

wpadłem na tym komputerze, gdy próbuje przekonwertować z repozytorium Mercurial do git. Przetestowałem polecenia na msysgit 1.7.10.

32

Specyficzny format:

git commit --author="John Doe <[email protected]>" -m "Impersonation is evil." 
+0

Dlaczego nie wymaga hasła John Doe, jeśli zobowiązujesz się do jego nazwiska? – Narek

+2

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

5

Format

A U Thor <[email protected]> 

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

FirstName MiddleName LastName <[email protected]> 

Wygląda na środku i nazwiska są opcjonalne (być może część przed adres e-mail nie ma w ogóle ścisłego formatu). Spróbuj na przykład w ten sposób:

git commit --author="John <[email protected]>" -m "some fix" 

Jak docs powiedzieć:

--author=<author> 
     Override the commit author. Specify an explicit author using the standard 
     A U Thor <[email protected]> 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żywać tego formatu, traktuje git warunkiem ciąg jako wzorzec i próbuje znaleźć pasujące imię wśród autorzy innych commitów.

+0

Nie ma czegoś takiego jak * FirstName MiddleName LastName *. Zobacz [to] (http://stackoverflow.com/questions/11579311/git-commit-as-different-user-without-email-or-only-email#comment15320898_11579311). –

98

Minimalny Wymagany format autor, jak zasugerował w this SO answer jest

Name <email> 

W twoim przypadku oznacza to, że chcesz napisać

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

Per Willem D'Haeseleer, o ile was nie masz adresu e-mail, można użyć <>:

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

s napisany na git commit man page, do którego jesteś podłączony, jeśli dostarczysz coś mniej niż to, jest używany jako token wyszukiwania do przeszukiwania poprzednich zatwierdzeń, szukając innych zatwierdzeń tego autora.

+21

Właśnie się dowiedziałem, że jeśli nie masz adresu e-mail, możesz po prostu wpisać "name <>", aby jawnie pozostawić go puste, zamiast wpisywać fałszywe. –

+0

Jeśli użyjesz po nazwach '" name <> "' i 'git commit --amend', to zawiedzie z błędem' invalid ident'; więc po prostu nie rób tego. – sanmai

+1

Podobno nawet przy korzystaniu z tej opcji nadal musisz ustawić user.email i user.name w twojej konfiguracji git, inaczej git narzeka. – qwertzguy

2

Wystarczy suplement:

git commit --author = "[email protected]" -m "personifikacji jest zła."

W niektórych przypadkach nadal nie popełnić i pokazuje następujący komunikat:

*** Proszę mi powiedzieć, kim jesteś.

Run

git config --global user.email "[email protected]" git config --global user.name "Your Name"

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

krytyczny: nie można automatycznie wykryć adres e-mail (got xxxx)

Więc wystarczy uruchomić "git config", a następnie "git commit"

-4

Jeśli zobowiązując się do Github nie robić potrzebujemy prawdziwego e-mail można użyć <username>@users.noreply.github.com

Niezależnie od korzystania gitHub czy nie, prawdopodobnie po raz pierwszy chcą zmienić committer dane (w Windows używać SET GIT_...)

GIT_COMMITTER_NAME='username' 
GIT_COMMITTER_EMAIL='[email protected]' 

Następnie ustaw autor

git commit --author="username <[email protected]>" 

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

Powiązane problemy