Używam osobistego laptopa zarówno do pracy, jak i do projektów osobistych i chciałbym używać służbowego adresu e-mail do wykonywania zobowiązań w pracy (gitolite) i osobistego adresu e-mail do pozostałych (github).
Czytałem o następujących rozwiązaniach, które są globalne lub tymczasowe:
git config --global user.email "[email protected]"
git config user.email "[email protected]"
git commit --author "Bob <[email protected]>"
- Ustawienie jedną z
GIT_AUTHOR_EMAIL
,GIT_COMMITTER_EMAIL
lubEMAIL
zmienne środowiskowe
Jednym z rozwiązań jest ręczne uruchomienie funkcji powłoki, która ustawia moje środowisko jako służbowe lub osobiste , ale jestem prawie pewien, że często zapominam o przełączeniu się na poprawną tożsamość, co powoduje zatwierdzenie pod niewłaściwą tożsamością.
Czy istnieje sposób powiązania określonego repozytorium, nazwy projektu itp. Z tożsamością (imię i nazwisko, e-mail)? Co robią ludzie?
git
github
gitolite
git-config
Martin Jambon
źródło
źródło
Odpowiedzi:
git config user.email "[email protected]"
Wykonanie tego wewnątrz repozytorium spowoduje ustawienie konfiguracji na TYM repozytorium, a nie globalnie.
Wygląda na to, że właśnie tego szukasz, chyba że źle cię czytam.
źródło
Musisz użyć lokalnego polecenia set poniżej:
zestaw lokalny
lokalny get
Lokalny plik konfiguracyjny znajduje się w katalogu projektu:
.git/config
.zestaw globalny
globalny get
Globalny plik konfiguracyjny w katalogu domowym w:
~/.gitconfig
.Pamiętaj, aby cytować puste miejsca itp., Na przykład: „Imię Nazwisko”
źródło
Edytuj plik konfiguracyjny w folderze „.git”, aby zachować inną nazwę użytkownika i adres e-mail zależny od repozytorium
Poniższe polecenie pokazuje, która nazwa użytkownika i adres e-mail zostały ustawione dla tego repozytorium.
Przykład: dla mnie ten plik konfiguracyjny w D: \ workspace \ eclipse \ ipchat \ .git \ config
Tutaj ipchat to nazwa mojego repozytorium
źródło
Jeśli
git config user.email "[email protected]"
go użyjesz , zostanie on powiązany z bieżącym projektem, w którym jesteś.To właśnie robię dla moich projektów. Ustawiam odpowiednią tożsamość podczas klonowania / inicjowania repozytorium. Nie jest głupi (jeśli zapomnisz i popchniesz, zanim się zorientujesz, jesteś w oponie), ale jest tak dobry, jak tylko możesz, bez możliwości powiedzenia
git config --global user.email 'ILLEGAL_VALUE'
Właściwie możesz zrobić nielegalną wartość. Ustaw swój
git config --global user.name $(perl -e 'print "x"x968;')
Następnie, jeśli zapomnisz ustawić wartości nieglobalne, otrzymasz komunikat o błędzie.
[EDYTUJ] W innym systemie musiałem zwiększyć liczbę x do 968, aby to się nie powiodło z „fatal: niemożliwie długi osobisty identyfikator”. Ta sama wersja git. Dziwne.
źródło
Jeśli nie użyjesz tego
--global
parametru, ustawi on zmienne tylko dla bieżącego projektu.źródło
Począwszy od Git 2.13 możesz użyć
includeIf
w swoim gitconfig pliku z inną konfiguracją w oparciu o ścieżkę do repozytorium, w którym uruchamiasz polecenia git.Ponieważ w Ubuntu 18.04 jest dostępny wystarczająco nowy Git, używam go
~/.gitconfig
całkiem szczęśliwie.https://motowilliams.com/conditional-includes-for-git-config#disqus_thread
Aby korzystać z Git 2.13, musisz albo dodać PPA (Ubuntu starsze niż 18.04 / Debian) lub pobrać pliki binarne i zainstalować (Windows / inny Linux).
źródło
git config core.sshCommand
wieloma kluczami prywatnymi zapewnia pełne bezproblemowe zarządzanie tożsamością git.To był dokładnie mój problem. Napisałem skrypt przechwytujący, który ostrzega, jeśli masz pilota Github, a nie zdefiniowałeś lokalnej nazwy użytkownika.
Oto jak to skonfigurować:
Utwórz katalog do przechowywania globalnego haka
mkdir -p ~/.git-templates/hooks
Powiedz gitowi, aby skopiował wszystko
~/.git-templates
do.git
katalogu na projekt po uruchomieniu git init lub clonegit config --global init.templatedir '~/.git-templates'
A teraz skopiuj następujące wiersze do
~/.git-templates/hooks/pre-commit
i uczyń plik wykonywalnym (nie zapomnij o tym, w przeciwnym razie git go nie wykona!)Jeśli używasz innych hostów do swoich prywatnych repozytoriów, musisz wymienić
github.com
zgodnie ze swoimi potrzebami.Teraz za każdym razem, gdy wykonasz polecenie
git init
lubgit clone
git, skopiuje ten skrypt do repozytorium i wykona go przed wykonaniem jakiegokolwiek zatwierdzenia. Jeśli nie ustawiłeś lokalnej nazwy użytkownika, wyświetli ostrzeżenie i nie pozwoli ci zatwierdzić.źródło
Bardzo podoba mi się sposób, w jaki Micah Henning przedstawił w jego artykule (zobacz Konfigurowanie tożsamości Git ) na ten temat. Fakt, że stosuje i wymusza tożsamość każdego utworzonego / sklonowanego repozytorium, jest dobrym sposobem, aby nie zapomnieć o ustawieniu tego za każdym razem.
Podstawowa konfiguracja gita
Usuń konfigurację bieżącego użytkownika w git:
Wymuś konfigurację tożsamości w każdym nowym repozytorium lokalnym:
Utwórz alias Gita dla
identity
polecenia, użyjemy później:Tworzenie tożsamości
Utwórz tożsamość za pomocą GPG (użyj
gpg
lub wgpg2
zależności od tego, co masz w systemie). Powtórz kolejne kroki dla każdej tożsamości, której chcesz użyć.Skopiuj blok kluczy publicznych i dodaj go do ustawień GitHub / GitProviderOfChoice jako klucz GPG.
Dodaj tożsamość do konfiguracji Git. Powtórz to również dla każdej tożsamości, którą chcesz dodać:
Skonfiguruj tożsamość dla repozytorium
Jeśli nowe repozytorium nie ma przypisanej tożsamości, po zatwierdzeniu pojawi się błąd przypominający o ustawieniu.
Określ tożsamość, którą chcesz w nowym repozytorium:
Jesteś teraz gotowy, aby zaangażować się w tożsamość gitlab .
źródło