Podpisywanie commitów git może uratować życie, gdy musisz udowodnić, że jesteś (lub nie) autorem commitów lub że commit został zmieniony przez inną osobę. Istnieje kilka prostych, ale nie tak oczywistych kroków potrzebnych do tego, aby to zadziałało.

Wygeneruj parę kluczy publiczny/prywatny

Uruchom gpg:

gpg --full-gen-key # gpg 2.xgit commit signing

lub

gpg --gen-key # gpg 1.x
  • Wybierz RSA and RSA
  • Ustaw rozmiar klucza na 4096
  • Ustaw okres ważności klucza (cokolwiek ci odpowiada)
  • Wprowadź swoje dane (imię i nazwisko oraz adres e-mail). Powinny one być zgodne z tożsamością committera, w przeciwnym razie będziesz musiał ręcznie poinformować git, którego klucza użyć.

Eksport klucza publicznego

  • Uzyskaj swój klucz publiczny, uruchamiając:
     gpg --list-secret-keys --keyid-format LONG
    

    Znajdź swój klucz i skopiuj identyfikator, jest on poprzedzony przez sec 4096R/:

    sec   4096R/123456789ABCDEF0
    

    Następnie uruchom polecenie eksportu:

    gpg --armor --export 123456789ABCDEF0
    

    i skopiować dane wyjściowe z kluczem publicznym (wraz z -----BEGIN PGP PUBLIC KEY BLOCK----- oraz -----END PGP PUBLIC KEY BLOCK-----).

Dodaj klucz publiczny do repozytorium git

Github

Przejdź do ustawień swojego profilu, aby Klucze SSH i GPG i kliknij New GPG key gdzie można wkleić i zapisać klucz.

Gitlab

Przejdź do ustawień użytkownika, do Klucze GPG, wklej swój klucz i naciśnij Add key

Konfiguracja lokalnego repozytorium i narzędzi

Repozytoria Git są teraz świadome twoich kluczy, ale musimy poinstruować git, aby używał twojego klucza

Wymuszenie użycia klucza publicznego do podpisania

W przypadku niezgodności między adresem e-mail użytkownika git a adresem e-mail używanym do kluczy gpg, można wyraźnie określić klucz używany do podpisywania:

git config --global user.signingkey 123456789ABCDEF0

Konfiguracja IDE

W przypadku uruchamiania za pomocą IDE, takiego jak IntelliJ, należy skonfigurować gpg, aby nie korzystał z terminala, ale raczej z własnego GUI. Wystarczy dodać następującą linię do ~/.gnupg/gpg.conf plik:

no-tty

Z drugiej strony, będzie to prowadzić do problemów z zatwierdzaniem przy użyciu sesji ssh, więc należy pamiętać, że trzeba włączyć / wyłączyć tę opcję w zależności od tego, czy pracujesz zdalnie, czy nie.

Podpisz zobowiązanie

Możemy to zrobić w obie strony:

  • Dodaj -S przełącza się za każdym razem, aby podpisać zatwierdzenie:
    git commit -S -m add new feature
    
  • Skonfiguruj git, aby używał podpisywania jako opcji domyślnej:
    git config --global commit.gpgsign true
    

    W przypadku dystrybucji linuksa korzystającej z gpg2 trzeba to wyraźnie ustawić:

    git config --global gpg.program gpg2
    

Sprawdzanie podpisów

Możesz łatwo sprawdzić, które zatwierdzenia są podpisane i zweryfikowane, korzystając ze stron repozytorium gitlab i GitHub. Każde podpisane zatwierdzenie będzie miało ładny zielony Verified etykieta. Inną opcją sprawdzenia tego jest użycie git log polecenie:

git log --show-signature

Po każdym podpisanym zatwierdzeniu zobaczysz informacje z gpg o statusie danego zatwierdzenia (czy jest zweryfikowane, czy nie):

podpisywanie commitów git

Więcej informacji:

Chcesz porozmawiać z naszymi ekspertami na temat niestandardowych rozwiązań w zakresie tworzenia oprogramowania dla Twojej firmy?

P: Jak mogę wyeksportować swój klucz publiczny?

Aby wyeksportować klucz publiczny, uruchom polecenie "gpg -list-secret-keys -keyid-format LONG", aby znaleźć identyfikator klucza, a następnie uruchom polecenie "gpg -armor -export [identyfikator klucza]", aby wyeksportować klucz publiczny.

P: Jak dodać swój klucz publiczny do repozytorium git?

Aby dodać klucz publiczny do repozytorium git na Github, przejdź do ustawień profilu, do sekcji SSH i klucze GPG i kliknij Nowy klucz GPG, gdzie możesz wkleić i zapisać swój klucz. W Gitlab przejdź do ustawień użytkownika, do kluczy GPG, wklej swój klucz i naciśnij Dodaj klucz.

5/5 - (1 głos)