Trivial przykład alias do pobrania poprzedniej wersji pliku.
Sztuką jest, aby formatować dane wyjściowe dziennika z --format tylko powrócić hash popełnić
[alias]
prev = "!f(){ git checkout $(git log -1 --format="%H" --skip=1 -- ${GIT_PREFIX:-.}/$1) -- ${GIT_PREFIX:-.}/$1; git reset ${GIT_PREFIX:-}/$1; }; f"
Zastosowanie git log -1
zapewnia git prev
zawsze zwraca natychmiastowe pliku nadrzędnego. Wybór następnego rodzica może być bardziej złożony.
Należy również zauważyć, że plik, po wyewidencjonowaniu, jest natychmiast dodawany do indeksu. Nie jest scalony z istniejącą kopią i nie ostrzega o zastąpieniu lokalnych zmian. Zawarłem wezwanie do git-reset, aby upewnić się, że plik do realizacji transakcji znajduje się tylko w katalogu roboczym, a nie w indeksie.
Użycie opcji GIT_PREFIX
umożliwia wprowadzanie ścieżek względnych, ale tylko stosunkowo nowe wersje git obsługują GIT_PREFIX.
edit ..
samo przy użyciu git REV-listy .. bardzo mocny polecenie git git przeznaczony dla przejeżdżające wykresy przodków kiedy skryptów i automatyzacji ...
[alias]
prev = "!f(){ git checkout $(git rev-list --max-count=1 --skip=1 HEAD -- ${GIT_PREFIX:-.}/$1) -- ${GIT_PREFIX:-.}/$1; git reset ${GIT_PREFIX:-}/$1; }; f"
Co pytasz tutaj? Alias do sprawdzania wersji pliku zapisanego w katalogu macierzystym 'HEAD'? Proszę o wyjaśnienie. – Jubobs
Co to jest "FHEAD"? – Jubobs
@Jubobs Pytanie wydaje mi się wystarczająco jasne: znajdź poprzednią wersję konkretnego pliku, gdzie "poprzedni" oznacza "sposób, w jaki był tuż przed ostatnim zatwierdzeniem, które zmieniło ten plik" (i ignorowanie innych zmian, które się nie zmieniają ten plik). – hvd