텍스트 파일에 사용자 이름 목록이 있습니다. 이 파일을 업데이트하고 제출합니다. 마지막 커밋 이후 변경 사항 목록을 얻는 방법을 찾고 있습니다.
diff 형식이 전혀 필요하지 않습니다. 마지막 커밋 이후 출력이 한 줄에 하나의 사용자 이름이 되도록 하고 싶습니다(각 커밋에 추가됨).
출력에서 모든 git diff 구문을 제거하는 설정을 찾을 수 없으므로 순전히 방금 추가된 새 줄의 목록입니다.
예
원본 파일:
user1
user2
user3
그런 다음 추가합니다.
user4
user5
그런 다음 제출하세요.
나는 git diff를 수행하고 다음을 볼 수 있기를 원합니다.
user4
user5
답변1
Lookahead/lookbehind를 grep diff 출력에 결합할 수 있습니다.
git diff --unified=0 | grep -Po '(?<=^\+)(?!\+\+).*'
(?<=^\+)
다음으로 시작하는 줄에 대한 긍정적인 검토입니다.+
(?!\+\+)
과의 일치를 방지하기 위한 부정적인 예측입니다+++ a/path/to/file
.
git 옵션 --unified=0
은 제거된 diff 컨텍스트를 필터링하는 줄 수를 줄이는 것이지만 선택 사항입니다.
더 좋은 것이 있을 수도 있습니다. 저는 PCRE에 능숙하지 않습니다.
답변2
kaiko의 답변을 빌리면 --unified=0
다음과 같은 결과를 얻습니다.
git diff HEAD^ HEAD --unified=0 | tail +6 | sed -e 's/^\+//'