Git 커밋 내 모든 파일 목록 확인하기
해결 방법
특정 커밋의 파일 목록 보기:
- git diff-tree --no-commit-id --name-only -r <커밋 해시>:
- --no-commit-id: 커밋 ID를 출력하지 않고 파일 이름만 표시합니다.
- --name-only: 변경된 파일의 이름만 표시합니다.
- -r: 디렉토리 트리를 재귀적으로 탐색하여 모든 변경 사항을 나열합니다.
- <커밋 해시>: 확인하고 싶은 커밋의 해시 값을 입력합니다.
예시:
git diff-tree --no-commit-id --name-only -r 12345678
위 명령어를 실행하면 12345678 커밋에 포함된 모든 파일 목록이 출력됩니다.
- git show <커밋 해시>:<파일 경로>:
- <파일 경로>: 파일의 경로를 입력합니다.
git show 12345678:src/main.py
추가 설명
- 커밋 해시 찾는 방법:
- 파일 경로:
- 더 자세한 정보:
요약
특정 커밋에 포함된 모든 파일 목록을 확인하려면 git diff-tree
명령어를 사용하고, 특정 파일의 내용을 확인하려면 git show
명령어를 사용하면 됩니다.
- 특정 파일이 어떤 커밋에서 추가/수정되었는지 알고 싶어요.
- 두 커밋 사이에 변경된 파일 목록을 확인하고 싶어요.
- 커밋 로그를 더 효율적으로 확인하는 방법이 있나요?
Git 커밋 내 파일 목록 확인 관련 샘플 코드
"git diff-tree --no-commit-id --name-only -r <커밋 해시>" 명령어를 활용한 좀 더 다양한 예시와 함께, 실제 개발 환경에서 어떻게 활용될 수 있는지 보여드리겠습니다.
특정 브랜치의 최신 커밋 파일 목록 확인
# main 브랜치의 최신 커밋에서 변경된 파일 목록 확인
git diff-tree --no-commit-id --name-only -r $(git rev-parse main)
- $(git rev-parse main): main 브랜치의 최신 커밋 해시를 가져와 명령어에 전달합니다.
두 커밋 사이의 변경된 파일 목록 확인
# 커밋 A와 커밋 B 사이의 변경된 파일 목록 확인
git diff-tree --name-only -r <커밋 A> <커밋 B>
커밋 로그와 함께 파일 목록 확인 (간단한 스크립트 예시)
#!/bin/bash
# 커밋 로그를 확인하고, 각 커밋에서 변경된 파일 목록을 출력하는 스크립트
git log --pretty=format:"%h %s" | while read commit; do
echo "Commit: $commit"
git diff-tree --no-commit-id --name-only -r $commit
echo ""
done
- 위 스크립트를
list_changed_files.sh
와 같은 이름으로 저장하고 실행하면 커밋 로그와 함께 각 커밋에서 변경된 파일 목록을 확인할 수 있습니다.
실제 개발 환경에서의 활용 예시
- 특정 기능 개발 후 변경된 파일 확인: 특정 기능 개발을 마치고 해당 커밋에서 어떤 파일들이 변경되었는지 확인하여 코드 리뷰 시 참고할 수 있습니다.
- 버그 수정 후 영향 범위 확인: 버그를 수정한 후 해당 커밋에서 변경된 파일들을 확인하여 예상치 못한 부작용이 발생했는지 검토할 수 있습니다.
- 배포 전 변경 사항 확인: 배포 전에 변경된 파일 목록을 확인하여 배포 범위를 파악하고, 문제 발생 시 빠르게 원인을 파악할 수 있도록 준비할 수 있습니다.
- 협업 시 변경 사항 공유: 다른 개발자와 협업할 때, 각자 작업한 내용을 공유하기 위해 변경된 파일 목록을 보여줄 수 있습니다.
추가 팁
--diff-filter
옵션: 특정 유형의 변경만 필터링하여 확인할 수 있습니다. 예를 들어,--diff-filter=M
은 수정된 파일만,--diff-filter=A
는 새로 추가된 파일만 보여줍니다.--follow
옵션: 파일이 이동하거나 이름이 변경된 경우에도 추적하여 변경 사항을 확인할 수 있습니다.git log -p
: 커밋 로그와 함께 변경된 내용을 상세하게 확인할 수 있습니다.
주의: 위 명령어들은 기본적인 사용법을 보여주는 예시이며, 실제 프로젝트 환경에서는 프로젝트의 규모나 특성에 따라 더 복잡한 명령어 조합이 필요할 수 있습니다.
- 예를 들어, 특정 파일의 변경 이력을 추적하고 싶다거나, 특정 패턴의 파일만 찾고 싶다면 더 자세한 설명을 드릴 수 있습니다.
- "특정 확장자를 가진 파일들만 목록으로 보고 싶어요."
Git 커밋 내 파일 목록 확인: 대체 방법 및 심화 활용
"git diff-tree" 명령어 외에도 Git 커밋 내 파일 목록을 확인하는 다양한 방법들이 있습니다. 상황에 맞게 적절한 방법을 선택하여 활용해 보세요.
git log 명령어 활용
- 기본적인 파일 목록 확인:
git log --name-only <커밋 해시>
- 간단하게 커밋에 포함된 파일 목록만 출력합니다.
- 더 자세한 정보와 함께 확인:
git log -p <커밋 해시>
- 각 파일의 변경 내용까지 함께 확인할 수 있습니다.
git show 명령어 활용
- 특정 파일의 내용 확인:
git show <커밋 해시>:<파일 경로>
- 특정 파일의 내용을 확인하는 데 주로 사용됩니다.
- 파일 목록 확인 (간접적):
Git GUI 도구 활용
- SourceTree, GitKraken 등:
- 시각적인 인터페이스를 통해 커밋 히스토리, 파일 변경 내역 등을 쉽게 확인할 수 있습니다.
- 특정 커밋을 선택하면 해당 커밋에서 변경된 파일 목록이 상세하게 표시됩니다.
Git 서버(GitHub, GitLab 등) 활용
- 웹 인터페이스:
- API:
심화 활용 및 추가 팁
- 특정 파일의 변경 이력 추적:
git log --follow --name-only <파일 경로>
- 특정 패턴의 파일 찾기:
git grep -l "패턴" <커밋 해시>
- 특정 패턴이 포함된 파일 목록을 찾을 수 있습니다.
- 커밋 범위 지정:
git log --name-only <시작 커밋>..<끝 커밋>
- 두 커밋 사이의 변경 사항을 확인할 수 있습니다.
- 커밋 메시지 검색:
git log --grep="커밋 메시지 키워드" --name-only
- 커밋 메시지에 특정 키워드가 포함된 커밋의 파일 목록을 확인할 수 있습니다.
어떤 방법을 선택해야 할까요?
- 빠르게 파일 목록만 확인하고 싶다면:
git diff-tree
,git log --name-only
- 파일 변경 내용까지 상세히 확인하고 싶다면:
git log -p
, Git GUI 도구 - 프로그램적으로 파일 목록을 처리해야 한다면: Git 서버 API
- 복잡한 쿼리나 시각화가 필요하다면: Git GUI 도구 또는 Git 서버의 고급 기능
- "특정 파일의 변경 이력을 그래프로 시각화하고 싶어요."
- "커밋 로그를 CSV 파일로 변환하고 싶어요."
- "특정 기간 동안 변경된 파일의 통계를 보고 싶어요."
git git-show