2013-10-19 2 views
0

주어진 커밋 SHA가있는 경우 커밋을 통해 추가 된 파일 만 표시하는 가장 좋은 방법은 무엇입니까? 감사.커밋에서 추가 된 파일을 git로 표시하는 방법은 무엇입니까?

+1

가능한 복제본 [Git의 커밋에 대한 모든 파일 나열] (http://stackoverflow.com/questions/424071/list-all-the-files-for-a-commit -in-git) – lurker

+0

그 대답은 커밋을 통해 추가 된 파일에 대해서만 커밋을 필터링하는 방법을 지정하지 않았습니다. – Monwe

+0

'git show --name-status SHA' 또는'git show --name-only SHA'는 어떻습니까? – lurker

답변

0

는 좀 더 연구 한 후이 꽤 신뢰할 수있는 솔루션이 될 것으로 보인다.

자식 쇼 -m --name-상태 -1 -U | grep $ 'A \ t'

+0

이 질문은 "파일을 추가하는 것이 무엇을 의미합니까?"라는 질문에 "어떤 * 부모가 아닌 경우"라는 질문에 답합니다. 예를 들어, 'feature'를'master'에 병합하고'master'는 파일을' yoink'가 'feature'에 없으면 (master가 메인 라인으로 간주 될지라도) 볼 수 있습니다. – torek

2

"최고"는 까다 롭습니다 (아이스크림의 가장 좋은 맛은 무엇입니까?)하지만 많은 방법이 있습니다. [: 음, 아래 참조, 또는 편집] :

git config alias.files-added '!git diff --name-only --diff-filter=A $1^' 
:

git diff --name-only --diff-filter=A <id>^ <id> 
이 사용하는

가장 쉬운 방법은 자식 별명 아마

최단 출력하지만, 커밋 가정은 병합하지 않습니다

는 (인수없이 git files-added을 실행하는 오 잘 이상한 "나쁜 개정"메시지를주고 있지만 않습니다).

병합 커밋을 처리해야하는 경우 "파일 추가"의 의미를 결정해야합니다. 파일이 부모가 아닌 경우 추가 되었습니까? 에있는 경우 모두 추가 되었습니까? 부모? 예를 들어, 당신이 topicsubtopic-A, subtopic-Bsubtopic-C을 합병 한 가정 및 xyzsubtopic-Btopic 모두에 있던 파일 만 subtopic-A 또는 subtopic-C 중 하나에 존재하지 않았다. xyz이 (가) "추가"되었습니까?

편집 : "추가됨"의 정의가 "병합 전에 ‘ 메인 라인 ’을 호출하는 것이 가장 많다"는 의미 인 경우이 동일한 명령이 작동합니다. 즉 위와 같이 지점 topic에 있고 하나 이상의 다른 분기를 topic으로 병합하고 에 이라는 파일이없는 경우 최종 병합 완결에 galumph 파일이 포함되어있는 경우이 파일은 "추가됨"으로 간주됩니다 (합병 된 지점이있는 경우 상관없이).

관련 문제