Dziennik zdarzeń

Każde repozytorium git ma opcję prowadzenia tzw. dziennika zdarzeń - Reflogu. Dziennik ten jest szczególnie przydatny gdy potrzebujemy odzyskać "utracone" dane po wykonaniu destrukcyjnego polecenia (jak np. reset).

Przykładowy reflog może wyglądać następująco:

Jeśli spróbujemy odczytać wpisy w dzienniku zdarzeń naszego repozytorium poleceniem:

git reflog

Otrzymamy pusty dziennik.

Tworzenie dziennika

Git gromadzi informacje o naszym repozytorium i istotnych zdarzeniach (jak commit, reset etc.) w plikach katalogu .git/logs.

Aby stworzyć dziennik dla naszego brancha master musimy utworzyć odpowiednią strukturę katalogów:

mkdir .git/logs
mkdir .git/logs/refs
mkdir .git/logs/refs/heads

Poniższe polecenie stworzy plik dziennika z odpowiednią pozycją (nasz dziennik będzie posiadać jedynie jeden wpis ponieważ wykonaliśmy do tej pory jedynie jedną znaczącą zmianę w repozytorium):

echo '0000000000000000000000000000000000000000 013983c730e093c4282a8e77e6c7e2aecc37e95e Lukasz Rybka <lukasz@email.com> 1539205980 +0200 commit (initial): First commit' > .git/logs/refs/heads/master

Jeśli teraz wywołamy polecenie reflog zobaczymy pojedynczy wpis mówiący o stworzeniu inicjalnego commitu.

Dziennik zdarzeń bieżącego brancha

Dla przyspieszenia działania dziennika, przy każdej zmianie brancha git kopiuje odpowiedni plik dziennika do specjalnego pliku: .git/logs/HEAD. W celu zapewnienia spójności wykonajmy to samo:

cp .git/logs/refs/heads/master .git/logs/HEAD

results matching ""

    No results matching ""