2009-08-27 4 views
5

커밋 전 후크를 작성 중이며 곧 커밋 될 각 파일의 전체 내용을 검사하고 싶습니다 (특히 파일). 나는 그것이 작업 트리 (다른 것일 수도 있음)에 존재하는 것이 아니라 커밋 될 파일을 검사 할 것입니다.git 인덱스에 존재하는 전체 파일을 표시합니다.

git과 함께 제공되는 pre-commit 후크 예제는 diff를 가져 오는 방법을 보여 주므로 (공백 등을 검사 할 수 있음) 전체 파일을 커밋 할 필요가 있습니다.

답변

9

이 시도 :

git --work-tree=/path/to/checkout-area checkout-index path/to/file-to-checkout 

--work-tree 옵션을 사용하면 실제 작업 트리에서 파일을 덮어 쓰지 않도록, 작업 트리로 다른 영역을 사용하여 자식을 알려줍니다. 필요한 경우 덮어 쓰기하도록 지시하기 위해 -f 옵션을 추가 할 수도 있지만, 스크립트가 자체적으로 올바르게 정리되면 필요하지 않아야합니다. 자세한 내용은 man page for checkout-index을 참조하십시오.

+0

네, checkout-index는 필자가 찾던 것을 발견하는 데 필요한 힌트였습니다. 감사! –

6

하나의1 파일에 대한 또 다른 해결책은 (당신이 충돌 병합 중이 아니거나 리베이스 가정)입니다 : (path/to/file는 저장소의 최상위 디렉토리에 상대적입니다)

$ git show :0:path/to/file 

.

또는 "git cat-file blob :0:path/to/file"(키워드 확장, 줄 바꿈 등) 필터를 호출하지 않습니다.

에 대한

항을 참조 확장 SHA-1 구문 맨 git-rev-parse에서


1)Jefromi's answer의 장점은 git checkout-index를 사용하여 하나 개 이상의 파일을 체크 아웃 할 수 있다는 것입니다; 당신은 전체 디렉토리 또는 전체 프로젝트를 체크 아웃 할 수 있습니다.

+0

나는 그것을 사용하는 변명을 찾을 수 있지만 이것은 대단합니다. – Cascabel

관련 문제