매일 쌓이는 커밋 기록을 손으로 정리하느라 시간이 아까웠던 경험이 있나요? 개발일지나 릴리즈 노트를 작성할 때마다 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로 더블클릭 실행 앱 만들기:
- Automator를 실행하고 '애플리케이션' 선택
- 'Run Shell Script' 액션 추가
- 스크립트 내용 입력:
cd ~/Documents/MyProject
/usr/local/bin/git-log-to-markdown
open gitlog.md
- 저장하면 더블클릭으로 실행 가능한 앱이 완성돼요
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부터 복잡한 자동화 시스템까지, 프로젝트 규모와 필요에 따라 선택해서 사용하면 돼요. 중요한 건 반복 작업을 자동화해서 더 중요한 개발 작업에 집중할 수 있다는 거예요. 오늘 소개한 방법 중에서 마음에 드는 걸 골라서 바로 적용해보세요. 개발 생산성이 확실히 향상될 거예요.