한 명의 사용자가 수정 한 모든 파일을 git에게 알려줄 수 있습니까?


147

git이 모든 커밋에서 한 명의 사용자가 수정 한 모든 파일 목록을 제공하고 싶습니다.

나의 특별한 유스 케이스는 루비 온 레일즈 프로젝트의 i18n에 관여했으며 이미 수행 된 파일과 수행해야 할 파일을 알고 싶습니다. 문제의 사용자는 나머지 코드 기반이 아닌 i18n에서만 작업을 수행했습니다. 따라서 정보는 모두 git에 있어야하지만 정보를 얻는 방법을 잘 모르겠습니다.

답변:


127

이것이 유일한 방법은 아니지만 작동합니다.

git log --pretty="%H" --author="authorname" |
    while read commit_hash
    do
        git show --oneline --name-only $commit_hash | tail -n+2
    done | sort | uniq

또는 한 줄로 :

git log --pretty="%H" --author="authorname" | while read commit_hash; do git show --oneline --name-only $commit_hash | tail -n+2; done | sort | uniq

184

이렇게하면 간단한 파일 목록이 표시됩니다.

git log --no-merges --author="Pattern" --name-only --pretty=format:"" | sort -u

필요에 따라 --committer로 --author를 전환하십시오.


1
--name-only파일 이름 만 출력하는 것으로 보입니다. 그 사실을 감안할 때 옵션 --stat--pretty=format:""성취는 무엇입니까? 당신이 그들을 떠날 수 있습니까?
요나

1
@Jonah --pretty = format : ""이 필요합니다. 나는 대답을 편집했다.
Ian Kelling

2
하나의 작은 결함에도 불구하고 훌륭하게 작동합니다. 출력 시작시 공백 링크를 생성합니다. 즉, 파일 수를 얻기 위해 'wc -l'을 통해 결과를 파이핑하면 1만큼
줄어 듭니다

삭제 된 파일을 어떻게 제외시킬 수 있습니까?
Tim Boland

8

시도하십시오 git log --stat --committer=<user>. --committer=옵션 에 사용자 이름을 입력하십시오 (또는 --author=적절하게 사용하십시오 ).

이것은 커밋 당 모든 파일을 뱉어 내므로 중복이있을 수 있습니다.


0
git log --pretty= --author=@abcd.com --name-only | sort -u | wc -l

회사별로 수정 된 모든 파일을 git repo에 표시합니다.

git log --pretty= --author=user@abcd.com --name-only | sort -u | wc -l

git repo에서 작성자 이름 'user'로 수정 된 모든 파일을 표시합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.