Partner gen.Algotech

Zmiana własności commitów w Gicie

Podczas migracji repozytoriów pomiędzy organizacjami często zdarza się, że musimy nadpisać właścicieli commitów. Powodem tego może być przeniesienie commitów z jednego konta na drugie, na przykład z powodu zmiany adresu e-mail użytkownika.

|
8 marca 2022

Podczas migracji repozytoriów pomiędzy organizacjami często zdarza się, że musimy nadpisać właścicieli commitów. Powodem tego może być przeniesienie commitów z jednego konta na drugie, na przykład z powodu zmiany adresu e-mail użytkownika.

Na przykład musiałem przenieść wszystkie commity z mojego starego konta pocztowego na Liście na moje drugie konto Gmail. Drugim przypadkiem, w którym mógłbym poprosić o taką zmianę, jest sytuacja, w której przypadkowo dokonuję commitów na prywatny adres e-mail, a dana firma chce, aby commitować pod ich domeną.

Na szczęście istnieje polecenie rozwiązujące ten problem, które mogę wywołać w głównym projekcie, aby nadpisać całą historię:

git filter-branch --env-filter "
if [ \"\$GIT_COMMITTER_EMAIL\" = \"janbarasek@seznam.cz\" ]
then
export GIT_COMMITTER_NAME=\"Jan Barášek\"
export GIT_COMMITTER_EMAIL=\"janbarasek@gmail.com\"
fi
if [ \"\$GIT_AUTHOR_EMAIL\" = \"janbarasek@seznam.cz\" ]
then
export GIT_AUTHOR_NAME=\"Jan Barášek\"
export GIT_AUTHOR_EMAIL=\"janbarasek@gmail.com\"
fi
" $@ --tag-name-filter cat -- --branches --tags

Po wykonaniu polecenia, zmiany należy przepłukać na master za pomocą polecenia git push -f.

Ostrzeżenie:

Po wykonaniu tego polecenia cała historia commitów zostaje nadpisana, a hashe zmienione. Jest to przerwa w BC, która powinna występować rzadko. Jeśli popełnisz błąd podczas nadpisywania commitów, nie będzie można przywrócić historii. Jednocześnie należy usunąć lub nadpisać wszystkie gałęzie, w przeciwnym razie powstanie konflikt wszystkich zmienionych commitów, który po rozwiązaniu zostanie podwójnie zapisany (oryginalny i nowy commit).

Ładowanie komentarzy...

Bądź na bieżąco

Zapisz się do naszego newslettera i otrzymuj najnowsze informacje o cyberbezpieczeństwie prosto na swoją skrzynkę e-mail.

Twoje dane są bezpieczne. Newsletter możesz w każdej chwili wypisać.