Tôi có lẽ là về nơi OP đã bắt đầu khi nó bắt đầu, tìm kiếm thứ gì đó đơn giản cho phép tôi sử dụng git Difftool với vimdiff để xem xét các thay đổi đối với các tệp trong repo của tôi bắt đầu từ một cam kết cụ thể. Tôi không hài lòng với câu trả lời mà tôi đang tìm kiếm, vì vậy tôi đã ném tập lệnh git inc remental rep orter (gitincrep) này cùng nhau và nó rất hữu ích với tôi:
#!/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
Được gọi là không có đối số, điều này sẽ bắt đầu từ đầu lịch sử repo, nếu không nó sẽ bắt đầu với bất kỳ hàm băm viết tắt nào bạn cung cấp và tiếp tục đến hiện tại - bạn có thể ctrl-C bất cứ lúc nào để thoát. Bất kỳ đối số nào sau lần đầu tiên sẽ giới hạn các báo cáo khác biệt chỉ bao gồm các tệp được liệt kê trong số các đối số đó (mà tôi nghĩ là những gì OP muốn và tôi khuyên bạn nên sử dụng cho tất cả các dự án nhỏ). Nếu bạn đang kiểm tra các thay đổi đối với các tệp cụ thể và muốn bắt đầu lại từ đầu, bạn sẽ cần cung cấp một chuỗi trống cho arg1. Nếu bạn không phải là người dùng vim, bạn có thể thay thế vimdiff bằng công cụ tìm khác biệt yêu thích của bạn.
Hành vi là đưa ra các nhận xét cam kết khi tìm thấy các thay đổi có liên quan và bắt đầu cung cấp các vimdiff chạy cho mỗi tệp đã thay đổi (đó là hành vi git differftool , nhưng nó hoạt động ở đây).
Cách tiếp cận này có thể khá ngây thơ, nhưng xem qua rất nhiều giải pháp ở đây và tại một bài đăng liên quan, nhiều người tham gia cài đặt các công cụ mới trên hệ thống mà tôi không có quyền truy cập quản trị viên, với các giao diện có đường cong học tập của riêng họ. Kịch bản trên đã làm những gì tôi muốn mà không phải đối phó với bất kỳ điều đó. Tôi sẽ xem xét nhiều đề xuất tuyệt vời ở đây khi tôi cần thứ gì đó tinh vi hơn - nhưng tôi nghĩ rằng điều này đáp ứng trực tiếp với OP.