지정된 브랜치와 더 유사한 저장소에서 git 커밋을 찾는 방법은 무엇입니까?

지정된 브랜치와 더 유사한 저장소에서 git 커밋을 찾는 방법은 무엇입니까?

Git 저장소에 분기가 있습니다. 브랜치와 가장 잘 일치하는 저장소에서 단일 커밋을 찾는 방법은 무엇입니까? 이 브랜치와 저장소의 다른 모든 커밋 사이에 diff를 실행하는 것처럼 가장 적은 diff 행을 생성하는 커밋을 찾고 싶습니다.

답변1

이것이 내 해결책입니다.

#!/bin/sh

start_date="2012-03-01"
end_date="2012-06-01"
needle_ref="aaa"

echo "" > /tmp/script.out;
shas=$(git log --oneline --all --after="$start_date" --until="$end_date" | cut -d' ' -f 1)
for sha in $shas
do
    wc=$(git diff --name-only "$needle_ref" "$sha" | wc -l)
    wc=$(printf %04d $wc);
    echo "$wc $sha" >> /tmp/script.out
done
cat /tmp/script.out | grep -v ^$ | sort | head -1 | cut -d' ' -f 2

관련 정보