특정 개정/분기 간의 파일 차이점 가져오기

특정 개정/분기 간의 파일 차이점 가져오기

파일 X의 (약간 다른) 버전이 있는 2개의 서로 다른 분기 A, B가 있습니다.
특정 패턴을 추가하는 브랜치 B에서 커밋을 가져오는 데 관심이 있습니다.
내가 대략적으로 한 일: diff files| grep "^\+" | grep "$PATTERN" | for loop grep -n.. do git blame -L done
이것은 작동하지만 git에서 쉽게 지원되는 것을 찾기 위해 재창조/순환하는 것인지 궁금합니다.
더 좋은 방법이 있나요?

답변1

원하는 정보를 결합 git blame하고 얻을 수 있다고 생각합니다 .git merge-base

git blame -n $(git merge-base A B).. -- file | grep -v "^^" | grep "$PATTERN"

이는 A와 B 사이의 공통 조상을 찾은 다음 공통 조상보다 이전의 모든 항목을 무시하고 git blame해당 공통 조상에서 실행됩니다 (기호는 조상에서 시작하여 현재 헤드에서 끝나는 개정을 보는 것을 나타냄 ). 출력에 줄 번호를 추가합니다. 그런 다음 공통 조상 이후 변경되지 않은 모든 행을 제거하고 마지막으로 변경된 행에서만 패턴을 찾습니다. 비역방향 모드에서는 현재 파일에 있는 행만 표시되므로 결과에는 필터와 정확히 동일하게 추가되거나 수정된 ​​행만 포함 됩니다 .file..git blame-ngrep -v "^^"grep "$PATTERN"git blame^\+

관련 정보