Git: błąd „powiedz mi, kim jesteś”

226

Mam serwery aplikacji, które ładuję razem za pomocą Chef + niektóre skrypty bash typu ad-hoc. Problem polega na tym, że gdy chcę uruchomić aktualizację na jednym z tych serwerów aplikacji, otrzymuję:

19:00:28: *** Please tell me who you are.

Run

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

Czy naprawdę muszę to ustawiać, aby robić proste za git pull origin masterkażdym razem, gdy aktualizuję serwer aplikacji? Czy można zrezygnować z tego zachowania, aby nie było błędu, gdy nazwa i adres e-mail nie są ustawione?

randombits
źródło
3
Z tego, co spotkałem, nie, ale z drugiej strony nie widzę problemu z dodaniem swojego imienia i adresu e-mail, nawet jeśli są to tylko fałszywe nazwiska i e-maile.
Sean
10
Tak, musisz je ustawić, jeśli „prosty” git pullma zamiar utworzyć zatwierdzenie, ponieważ na przykład dokonał scalenia.
fork0
1
Opisujesz scenariusz wdrożenia jednokierunkowego. Nie dodawałbym poświadczeń, aby uniknąć zatwierdzania automatycznego łączenia. Tak, zobaczysz problem z tym błędem, ale będzie to oznaczać, że ktoś błąka się po produkcji i zmienia pliki ręcznie uruchamiając scalanie.
Alex Skrypnyk

Odpowiedzi:

249

Spędzam na tym wiele godzin, kiedy wywołuję skrypt php, aby inicjować i zatwierdzać git. I odkryłem, że przepływ pracy powinien być:

1.git init
2.git config user.name "someone"
3.git config user.email "[email protected]"
4.git add *
5.git commit -m "some init msg"

Jeśli zamienisz [23] i 1, konfiguracja w ogóle nie będzie działać.

Chciałbym, żeby to pomogło.

luxuia
źródło
Jest to właściwa praktyka do inicjowania repozytorium git. Ale aktualizacja aktualizacji repo @gfxmonk jest lepsza
Davisein
Czy możesz wyjaśnić, jak to działa i dlaczego dawał błąd zanim to zrobił?
Chinmaya B,
1
Możesz dodać --globalprzełącznik do git configpoleceń i zrobić to raz dla swojego konta systemu operacyjnego. Po tym kroki 2-3 nie są potrzebne.
x-yuri,
50

Zamiast zrobić a git pull, możesz:

git fetch
git reset --hard origin/master

Żadna z nich nie wymaga konfiguracji nazwy użytkownika / adresu e-mail git.

To zniszczy wszelkie niezatwierdzone lokalne zmiany / zatwierdzenia i pozostawi HEAD wskazujący na zatwierdzenie (nie oddział). Ale żaden z nich nie powinien stanowić problemu dla serwera aplikacji, ponieważ nie powinieneś wprowadzać lokalnych zmian ani dokonywać zmian w tym repozytorium.

gfxmonk
źródło
Automerge git pull jest niebezpieczny w tej sytuacji, lepiej zresetować.
Davisein
Czy nie byłoby lepiej używać git fetch && git reset --hard HEAD?
jacoor
@jacoor nope: git reset --hard HEADpo prostu odrzuca twoje niezaangażowane zmiany, nie zmienia to, na czym opiera się twój obszar roboczy (ponieważ z definicji jesteś już na HEAD)
gfxmonk
33

Jeśli używasz sourcetree: Repozytorium -> Ustawienia repozytorium -> Zaawansowane -> odznacz pole „Użyj globalnych ustawień użytkownika”

działało świetnie dla mnie.

DoronK
źródło
w moim przypadku musiałem to sprawdzić, ale i tak! Dzięki za pomoc
Karoly
32

to działa dla mnie, spróbuj To .. musisz skonfigurować terminal z dostępem zdalnym.

     git config --global user.name "abc"
     git config --global user.email "[email protected]"
Kuldeep Singh
źródło
10

Zaktualizuj proces ładowania początkowego, aby utworzyć ${HOME}/.gitconfigodpowiednią zawartość lub skopiować skądś istniejący.

twalberg
źródło
9
git config user.email "insert github email here"
git config user.name "insert github real name here"

To zadziałało dla mnie świetnie.

MrRobot4.0
źródło
4

Ten sam problem był ze mną i został rozwiązany przez dodanie domyślnej nazwy i adresu e-mail Ustawienia repozytorium.

Zgodnie z sugestią Dorona -

Jeśli używasz sourcetree: Repozytorium -> Ustawienia repozytorium -> Zaawansowane -> odznacz pole „Użyj globalnych ustawień użytkownika”.

Dodaj domyślną nazwę i adres e-mail.

Rahul
źródło
4

W moim przypadku brakuje słowa „e” w słowie „email”, jak stwierdził Chad powyżej, ale widzę, że tak nie jest w przypadku ciebie. Naciśnij następujące polecenie, aby sprawdzić, czy wszystko działa zgodnie z oczekiwaniami.

git config -l
Mo-Gang
źródło
4

Musisz napisać swój e-mail w ten sposób

 git config --global user.email "[email protected]"

Następnie: wpisz nazwę użytkownika

 git config --global user.name "Your Name"

Po tym pojawi się okno Poupup

Napisz NAZWA UŻYTKOWNIKA i E- MAILU Na konto, które chcesz wnieść

Abu bakr
źródło
3

Dla mnie problemem było połączenie sieciowe, po ponownym połączeniu z moim Wi-Fi można było pobrać szczegóły i zatwierdzić bez żadnych problemów.

Sharukh Mastan
źródło
2

Czy naprawdę muszę to ustawiać, aby za każdym razem, gdy aktualizuję serwer aplikacji, wykonuję proste polecenie git pull origin? Czy można zrezygnować z tego zachowania, aby nie było błędu, gdy nazwa i adres e-mail nie są ustawione?

Zapyta tylko raz i upewni się, że klucz publiczny rsa dla tego komputera został dodany do twojego konta github, do którego próbujesz zatwierdzić lub przekazać żądanie ściągnięcia.

Więcej informacji na ten temat można znaleźć: tutaj

Mansab Uppal
źródło
1
Link jest zepsuty
Alice Schwarze
2

Miałem to jako wadliwy komunikat o błędzie:
git pulldziałało dobrze na linii cmd
git pullnie powiodło się w procesie CGI Perla (haka sieciowego do automatycznego wdrażania z github) z powyższym błędem.

Wykonanie git statuszidentyfikowanego pliku kolizji. Sortowanie to naprawiło problem.

Problem pojawił się później, kiedy zmieniłem niektóre ustawienia konfiguracji.

Tym razem ustawienie $ HOME i $ USER env var naprawiło to (domyślnie są wyłączone w procesie CGI)

Andrew Murphy
źródło
2

Spójrz na plik konfiguracyjny.

Repozytorium> Ustawienia repozytorium> Edytuj plik konfiguracyjny.

Sprawdź, czy [user]sekcja istnieje. Jeśli brakuje sekcji użytkownika, dodaj ją.

Przykład:

[user]
name = "your name"
email = "your email"
Aman Srivastava
źródło
2

używam heroku cli 1. muszę używać całej nazwy użytkownika i adresu e-mail użytkownika

$ git config --global user.email .login email.

$ git config --global nazwa.użytkownika .heroku nazwa.

  1. git pull [git url]
  2. git init
  3. git dodaj *

    5 git commit -m "po config user.name, email użytkownika"

  4. git push heroku master

linepro
źródło
2

Używam Jenkinsa i napotkałem ten problem podczas próby wydania wydania (które wymaga polecenia git commit). Aby rozwiązać problemy, musiałem dodać niestandardową nazwę użytkownika / adres e-mail (patrz zdjęcie). Niestandardowa nazwa użytkownika / adres e-mailDzięki temu podczas sprawdzania kodu używał nazwy / adresu e-mail mojego użytkownika podczas wykonywania wydania. Uwaga: ta konfiguracja jest dostępna w konfiguracji projektu rurociągu Jenkins Multibranch Pipeline.

Craig
źródło
2

git pullnie powinno tego wymagać. Jeśli jednak ściągnięcie powoduje konflikt scalania, wydaje się to niepotrzebne.

Kjeld Flarup
źródło
2

IMHO, właściwym sposobem rozwiązania tego błędu jest skonfigurowanie globalnego pliku konfiguracyjnego git.

Aby to zrobić, uruchom następujące polecenie: git config --global -e

Pojawi się edytor, w którym możesz wstawić domyślne konfiguracje git.

Oto kilka:

[user]
    name = your_username
    email = [email protected] 
[alias]
    # BASIC
    st = status
    ci = commit
    br = branch
    co = checkout
    df = diff

Aby uzyskać więcej informacji, zobacz Dostosowywanie Git - Konfiguracja Git

Gdy zobaczysz polecenie typu git config...

$ git config --global core.whitespace \
    trailing-space,space-before-tab,indent-with-non-tab

... możesz umieścić to w globalnym pliku konfiguracyjnym git jako:

[core]
   whitespace = space-before-tab,-indent-with-non-tab,trailing-space

W przypadku jednorazowych konfiguracji możesz użyć czegoś takiego git config --global user.name 'your_username'

Jeśli nie ustawisz globalnie konfiguracji git, musisz to zrobić dla każdego repozytorium git, z którym pracujesz lokalnie.

Ustawienia user.name i user.email mówią git, kim jesteś, więc później git commit polecenia nie będą narzekać,*** Please tell me who you are.

Wiele razy polecenia git sugerują, że nie należy uruchamiać. Tym razem sugerowane polecenia nie są złe:

$ git commit -m 'first commit'

*** Please tell me who you are.

Run

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

Wskazówka: dopóki nie zaznajomiłem się z git, tworzenie kopii zapasowej pliku projektu - przed uruchomieniem sugerowanych poleceń git i eksplorowaniem rzeczy, które moim zdaniem mogłyby zadziałać - kilkakrotnie zapisywało mój bekon.

l3x
źródło
2

Nie można automatycznie wykryć adresu e-mail.

Domyślnie przyjmuje nazwę użytkownika systemu [email protected].

Musisz więc ustawić swój adres e-mail jak poniżej:

git config user.email "[email protected]"

Po ustawieniu adresu e-mail możesz uruchomić polecenia git i zatwierdzić zmiany.

  1. git init
  2. git dodaj *
  3. git commit -m "niektóre init msg"
AMIT SAMOTA
źródło
1

Wystąpił ten komunikat o błędzie podczas próby zatwierdzenia niektórych plików.

Po prostu uruchomienie, git fetcha następnie próba ponownego zatwierdzenia działało dla mnie.

bergie3000
źródło
0

Aby to naprawić używam: git config --global user.email „[email protected]” i działa.

user.mail nie ma pracy, może trzeba umieścić E. Typo?

Victor Hugo Nogueira dWolf
źródło
Myślę, że OP chce wiedzieć, czy jest to naprawdę konieczne dla każdej aktualizacji.
tbrk
-5

To literówka. Przypadkowo ustawiłeś „user.mail” bez „ e ”. Napraw to, ustawiając „ e- mail użytkownika” w konfiguracji globalnej za pomocą

git config --global user.email „[email protected]

Znaleziono rozwiązanie tutaj

https://stackoverflow.com/a/14662703

Girish Joshi
źródło
3
Gdzie widzisz „user.mail” bez „e” na tej stronie?
Chad Nouis,