macOS에서 git 로그를 Markdown으로 자동 변환하는 완벽 가이드

매일 쌓이는 커밋 기록을 손으로 정리하느라 시간이 아까웠던 경험이 있나요? 개발일지나 릴리즈 노트를 작성할 때마다 git 로그를 일일이 복사하고 편집하는 작업은 정말 번거로운 일이에요.


macOS 환경에서는 몇 가지 스크립트만 활용하면 이런 반복 작업을 완전히 자동화할 수 있어요. 터미널 명령 한 번으로 깔끔한 Markdown 형식의 개발일지가 만들어지는 방법을 지금부터 상세히 알아볼게요.


노트북에서 코딩하는 손과 다양한 프로그래밍 언어 아이콘들이 표현된 일러스트


가장 쉬운 방법: git-log-to-markdown 스크립트 활용하기


GitHub에 공개된 git-log-to-markdown은 날짜별로 커밋을 자동 그룹화해서 보기 좋은 Markdown 파일로 만들어줘요. 설치부터 사용까지 5분이면 충분해요.


먼저 스크립트를 다운로드하고 실행 권한을 부여해요:

# 스크립트 다운로드 후 실행 권한 부여
chmod +x git-log-to-markdown

# 시스템 전역에서 사용할 수 있도록 복사
cp git-log-to-markdown /usr/local/bin


이제 프로젝트 폴더에서 명령을 실행하면 gitlog.md 파일이 자동으로 생성돼요:

# 모든 커밋 로그를 Markdown으로 변환
git-log-to-markdown

# 특정 작성자의 커밋만 추출
git-log-to-markdown --author="홍길동"

# 기간을 지정해서 추출
git-log-to-markdown --since="2025-07-01" --until="2025-08-01"


결과물은 이런 형태로 깔끔하게 정리돼요:

# Gitlog

## 2025-07-15
* feat: 로그인 API 추가
* fix: 메모리 누수 문제 해결

## 2025-07-14  
* chore: 의존성 업데이트
* docs: README 문서 개선


더 강력한 도구: changelog.sh로 테이블 형식 만들기


프로젝트 규모가 크거나 더 체계적인 문서가 필요하다면 changelog.sh가 최고의 선택이에요. 이 스크립트는 Markdown 테이블 형식으로 커밋 정보를 정리해주고, 버전별 구간 지정도 가능해요.


설치와 기본 사용법은 이렇게 간단해요:

# 실행 권한 부여 및 경로 복사
chmod +x changelog.sh
cp changelog.sh /usr/local/bin

# 최신 변경사항을 changelog로 뽑기
changelog.sh --format markdown --since v1.0.0 --until v1.0.2


특히 릴리즈 노트를 작성할 때 아주 유용한데, 결과물이 이런 테이블 형태로 나와요:

|COMMIT ID|COMMIT DATE|AUTHOR|COMMIT MSG.|
|---------|-----------|------|-----------|
|46d29ed|2023-11-20|eliu|Change vagrant box to bento/centos-7|
|9802713|2023-11-20|eliu|Fix error: Unknown configuration section 'vbguest'|


직접 만드는 나만의 스크립트


기존 도구가 마음에 들지 않거나 특별한 형식이 필요하다면 직접 스크립트를 만들어보세요. macOS의 기본 터미널 환경에서 바로 사용할 수 있어요.


가장 기본적인 형태부터 시작해볼게요:

#!/bin/bash
# save-gitlog.sh 파일로 저장

# 날짜와 커밋 메시지를 리스트 형태로 저장
git log --pretty=format:'- [%ad] %s' --date=short > gitlog.md


조금 더 발전시켜서 작성자별, 기간별 필터링도 추가할 수 있어요:

#!/bin/bash
# advanced-gitlog.sh

# 변수로 옵션 받기
AUTHOR=$1
SINCE=$2
UNTIL=$3

# 동적으로 명령어 구성
git log \
  ${AUTHOR:+--author="$AUTHOR"} \
  ${SINCE:+--since="$SINCE"} \
  ${UNTIL:+--until="$UNTIL"} \
  --pretty=format:'- [%ad] **%an**: %s' \
  --date=short > gitlog_filtered.md


사용할 때는 이렇게 실행하면 돼요:

# 실행 권한 부여
chmod +x advanced-gitlog.sh

# 홍길동의 최근 한 달 커밋만 추출
./advanced-gitlog.sh "홍길동" "1 month ago" "today"


git log의 숨겨진 강력한 필터 옵션들


git log 명령어에는 생각보다 다양한 필터 옵션이 있어요. 이걸 잘 조합하면 원하는 형태의 개발일지를 정확하게 만들 수 있어요.


작성자로 필터링하기:

# 특정 작성자의 커밋만
git log --author="홍길동"

# 여러 작성자를 동시에 (정규표현식 사용)
git log --author="홍길동|김철수"

# 이메일로도 검색 가능
git log --author="hong@example.com"


날짜와 기간으로 필터링하기:

# 특정 날짜 범위
git log --since="2025-07-01" --until="2025-08-01"

# 상대적인 기간 사용
git log --after="1 week ago"
git log --after="yesterday"

# 특정 날짜 이전의 커밋만
git log --before="2025-01-01"


커밋 메시지 내용으로 필터링하기:

# 특정 키워드가 포함된 커밋
git log --grep="Fix"
git log --grep="기능 추가"

# 대소문자 무시
git log --grep="bug" -i


브랜치와 파일별 필터링:

# 특정 브랜치의 커밋만
git log main

# develop에는 없고 main에만 있는 커밋
git log develop..main

# 특정 파일의 변경 이력만
git log -- src/components/Login.js


실전 활용: 주간 보고서 자동 생성하기


이제 배운 내용을 조합해서 실제로 쓸만한 스크립트를 만들어볼게요. 매주 금요일마다 실행하면 일주일간의 작업 내역이 깔끔하게 정리되는 스크립트예요:


#!/bin/bash
# weekly-report.sh

# 현재 날짜와 일주일 전 날짜 계산
TODAY=$(date +%Y-%m-%d)
LAST_WEEK=$(date -v-7d +%Y-%m-%d)

# 보고서 파일명 생성
REPORT_FILE="weekly_report_${TODAY}.md"

# 보고서 헤더 작성
echo "# 주간 개발 보고서" > $REPORT_FILE
echo "기간: ${LAST_WEEK} ~ ${TODAY}" >> $REPORT_FILE
echo "" >> $REPORT_FILE

# 작성자별로 섹션 나누기
AUTHORS=$(git log --since="$LAST_WEEK" --format='%an' | sort -u)

for AUTHOR in $AUTHORS; do
    echo "## $AUTHOR" >> $REPORT_FILE
    echo "" >> $REPORT_FILE
    
    # 해당 작성자의 커밋을 날짜별로 정리
    git log --author="$AUTHOR" \
            --since="$LAST_WEEK" \
            --pretty=format:'- [%ad] %s' \
            --date=short >> $REPORT_FILE
    
    echo -e "\n" >> $REPORT_FILE
done

echo "주간 보고서가 ${REPORT_FILE}에 생성되었습니다."


macOS 자동화 도구와 연계하기


터미널에서 매번 명령어를 입력하는 것도 귀찮다면, macOS의 자동화 도구를 활용해보세요. Automator나 Shortcuts 앱을 사용하면 더블클릭만으로 실행할 수 있는 앱을 만들 수 있어요.


Automator로 더블클릭 실행 앱 만들기:


  1. Automator를 실행하고 '애플리케이션' 선택
  2. 'Run Shell Script' 액션 추가
  3. 스크립트 내용 입력:
cd ~/Documents/MyProject
/usr/local/bin/git-log-to-markdown
open gitlog.md
  1. 저장하면 더블클릭으로 실행 가능한 앱이 완성돼요


cron으로 정기 실행 설정하기:


매일 자동으로 개발일지를 생성하고 싶다면 crontab을 활용해보세요:

# crontab 편집
crontab -e

# 매일 오후 6시에 자동 실행
0 18 * * * cd ~/Documents/MyProject && /usr/local/bin/git-log-to-markdown


고급 활용: 커밋 타입별로 분류하기


Conventional Commits 규칙을 따르고 있다면, 커밋 타입별로 분류해서 더 체계적인 문서를 만들 수 있어요:


#!/bin/bash
# classify-commits.sh

echo "# 변경사항 요약" > CHANGELOG.md
echo "" >> CHANGELOG.md

# 기능 추가
echo "## 🚀 새로운 기능" >> CHANGELOG.md
git log --grep="^feat:" --pretty=format:'- %s' | sed 's/^feat: //' >> CHANGELOG.md
echo -e "\n" >> CHANGELOG.md

# 버그 수정
echo "## 🐛 버그 수정" >> CHANGELOG.md
git log --grep="^fix:" --pretty=format:'- %s' | sed 's/^fix: //' >> CHANGELOG.md
echo -e "\n" >> CHANGELOG.md

# 문서 개선
echo "## 📝 문서 개선" >> CHANGELOG.md
git log --grep="^docs:" --pretty=format:'- %s' | sed 's/^docs: //' >> CHANGELOG.md


팀 협업을 위한 커스텀 포맷


팀에서 사용하기 좋은 더 상세한 포맷도 만들 수 있어요. PR 번호나 이슈 번호까지 포함시키면 추적이 훨씬 쉬워져요:


#!/bin/bash
# team-changelog.sh

git log --pretty=format:'### %s%n- **작성자**: %an%n- **날짜**: %ad%n- **커밋**: %H%n%n%b%n---' \
        --date=format:'%Y년 %m월 %d일' > team_changelog.md


여기서 한 걸음 더 나아가서, GitHub API와 연동하면 PR 정보나 이슈 정보까지 자동으로 가져올 수 있어요. 하지만 이건 별도의 도구나 스크립트가 필요하니 필요할 때 추가로 구현하면 돼요.


git 로그를 Markdown으로 자동 변환하는 방법은 정말 다양해요. 간단한 one-liner부터 복잡한 자동화 시스템까지, 프로젝트 규모와 필요에 따라 선택해서 사용하면 돼요. 중요한 건 반복 작업을 자동화해서 더 중요한 개발 작업에 집중할 수 있다는 거예요. 오늘 소개한 방법 중에서 마음에 드는 걸 골라서 바로 적용해보세요. 개발 생산성이 확실히 향상될 거예요.