ฉันอาจเกี่ยวกับที่ OP เมื่อเริ่มต้นนี้กำลังมองหาสิ่งที่ง่ายที่จะให้ฉันใช้gft difftoolกับvimdiffเพื่อตรวจสอบการเปลี่ยนแปลงไฟล์ใน repo ของฉันเริ่มต้นจากการกระทำที่เฉพาะเจาะจง ฉันไม่มีความสุขเกินไปกับคำตอบที่ฉันพบดังนั้นฉันจึงได้โยนสคริปต์git inc remental rep orter (gitincrep) นี้ไว้ด้วยกันและมันมีประโยชน์สำหรับฉัน:
#!/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
เรียกว่าไม่มี args สิ่งนี้จะเริ่มต้นจากจุดเริ่มต้นของประวัติ repo มิฉะนั้นจะเริ่มต้นด้วยสิ่งใดก็ตามที่แฮชที่คุณให้และดำเนินการจนถึงปัจจุบัน - คุณสามารถ ctrl-C ได้ตลอดเวลาเพื่อออก สิ่งใด ๆ หลังจากแรกจะ จำกัด รายงานความแตกต่างที่จะรวมเฉพาะไฟล์ที่ระบุใน args เหล่านั้น (ซึ่งฉันคิดว่าเป็นสิ่งที่ OP ต้องการและฉันขอแนะนำสำหรับทุกคนยกเว้นโครงการขนาดเล็ก) หากคุณกำลังตรวจสอบการเปลี่ยนแปลงไฟล์เฉพาะและต้องการเริ่มต้นตั้งแต่ต้นคุณจะต้องระบุสตริงว่างสำหรับ arg1 หากคุณไม่ใช่ผู้ใช้กลุ่มคุณสามารถแทนที่vimdiffด้วยเครื่องมือ diff ที่คุณโปรดปราน
พฤติกรรมคือการส่งออกความคิดเห็นกระทำเมื่อพบการเปลี่ยนแปลงที่เกี่ยวข้องและเริ่มเสนอvimdiffทำงานสำหรับไฟล์ที่เปลี่ยนแปลงแต่ละไฟล์ (นั่นคือgif difftoolพฤติกรรม แต่การทำงานที่นี่)
วิธีนี้อาจไร้เดียงสาสวย แต่มองผ่านโซลูชันมากมายที่นี่และที่โพสต์ที่เกี่ยวข้องหลายคนเกี่ยวข้องกับการติดตั้งเครื่องมือใหม่บนระบบที่ฉันไม่สามารถเข้าถึงผู้ดูแลระบบได้ด้วยอินเตอร์เฟสที่มีช่วงการเรียนรู้ของตนเอง สคริปต์ด้านบนทำในสิ่งที่ฉันต้องการโดยไม่เกี่ยวข้องกับสิ่งใด ฉันจะพิจารณาคำแนะนำที่ยอดเยี่ยมมากมายที่นี่เมื่อฉันต้องการบางสิ่งที่ซับซ้อนยิ่งขึ้น - แต่ฉันคิดว่านี่เป็นการตอบสนองโดยตรงต่อ OP