Prawdopodobnie wiem, gdzie był OP, kiedy to się zaczęło, szukając czegoś prostego, co pozwoliłoby mi użyć git difftool z vimdiff do przeglądu zmian w plikach w moim repozytorium, zaczynając od określonego zatwierdzenia. Nie byłem zbyt zadowolony z odpowiedzi, które znalazłem, więc rzuciłem razem ten skrypt git incremental rep orter (gitincrep) i było to dla mnie przydatne:
#!/usr/bin/env bash
STARTWITH="${1:-}"
shift 1
DFILES=( "$@" )
RunDiff()
{
GIT1=$1
GIT2=$2
shift 2
if [ "$(git diff $GIT1 $GIT2 "$@")" ]
then
git log ${GIT1}..${GIT2}
git difftool --tool=vimdiff $GIT1 $GIT2 "$@"
fi
}
OLDVERS=""
RUNDIFF=""
for NEWVERS in $(git log --format=format:%h --reverse)
do
if [ "$RUNDIFF" ]
then
RunDiff $OLDVERS $NEWVERS "${DFILES[@]}"
elif [ "$OLDVERS" ]
then
if [ "$NEWVERS" = "${STARTWITH:=${NEWVERS}}" ]
then
RUNDIFF=true
RunDiff $OLDVERS $NEWVERS "${DFILES[@]}"
fi
fi
OLDVERS=$NEWVERS
done
Wywoływany bez argumentów, rozpocznie się od początku historii repo, w przeciwnym razie rozpocznie się od skróconego skrótu zatwierdzenia, który podasz i przejdziesz do teraźniejszości - możesz w każdej chwili wyjść z Ctrl-C. Wszelkie argumenty po pierwszym ograniczą raporty różnic, aby zawierały tylko pliki wymienione wśród tych argumentów (myślę, że tego właśnie chciał OP i zalecałbym dla wszystkich oprócz drobnych projektów). Jeśli sprawdzasz zmiany w określonych plikach i chcesz zacząć od początku, musisz podać pusty ciąg dla arg1. Jeśli nie jesteś użytkownikiem vima, możesz go wymienić vimdiff swoim ulubionym narzędziem do porównywania .
Zachowanie polega na wyświetlaniu komentarzy zatwierdzania po znalezieniu odpowiednich zmian i rozpoczęciu oferowania uruchomień vimdiff dla każdego zmienionego pliku (to znaczy zachowanie git difftool , ale działa tutaj).
Takie podejście jest prawdopodobnie dość naiwne, ale przeglądając wiele rozwiązań tutaj i na powiązany post, wielu z nich wymagało zainstalowania nowych narzędzi w systemie, w którym nie mam dostępu administratora, z interfejsami o własnej krzywej uczenia się. Powyższy skrypt zrobił to, co chciałem, bez zajmowania się tym. Przejrzę tutaj wiele doskonałych sugestii, gdy będę potrzebować czegoś bardziej wyrafinowanego - ale myślę, że to bezpośrednio reaguje na PO.