Saya mungkin tentang di mana OP saat ini dimulai, mencari sesuatu yang sederhana yang akan membiarkan saya menggunakan git difftool dengan vimdiff untuk meninjau perubahan pada file dalam repo saya mulai dari komit tertentu. Saya tidak terlalu senang dengan jawaban saya menemukan, jadi saya melemparkan ini git inc remental rep orter (gitincrep) naskah bersama-sama dan itu sudah berguna bagi saya:
#!/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
Dipanggil tanpa argumen, ini akan dimulai dari awal sejarah repo, jika tidak akan dimulai dengan hash komit singkat apa pun yang Anda berikan dan lanjutkan ke saat ini - Anda dapat ctrl-C kapan saja untuk keluar. Setiap argumen setelah argumen pertama akan membatasi laporan perbedaan hanya untuk menyertakan file yang terdaftar di antara argumen tersebut (yang menurut saya adalah yang diinginkan OP, dan saya akan merekomendasikan untuk semua proyek kecil kecuali). Jika Anda memeriksa perubahan pada file tertentu dan ingin memulai dari awal, Anda harus memberikan string kosong untuk arg1. Jika Anda bukan pengguna vim, Anda dapat mengganti vimdiff dengan alat dif favorit Anda.
Behavior adalah untuk menghasilkan komit komentar ketika perubahan yang relevan ditemukan dan mulai menawarkan vimdiff berjalan untuk setiap file yang diubah (itu adalah perilaku git difftool , tetapi berfungsi di sini).
Pendekatan ini mungkin cukup naif, tetapi melihat melalui banyak solusi di sini dan di pos terkait, banyak yang terlibat menginstal alat baru pada sistem di mana saya tidak memiliki akses admin, dengan antarmuka yang memiliki kurva belajar mereka sendiri. Script di atas melakukan apa yang saya inginkan tanpa berurusan dengan semua itu. Saya akan melihat banyak saran bagus di sini ketika saya membutuhkan sesuatu yang lebih canggih - tetapi saya pikir ini langsung responsif terhadap OP.