홈 › Git › 01 / 8

저장소와 커밋

섹션 7진행 0 / 8

4. 응용 변형 예제

4.1 커밋 전에 큰 로그 파일을 발견했을 때

git add -A 뒤 git status -s 에 A huge.log 같은 줄이 보이면 커밋 전입니다. git restore --staged huge.log 로 스테이징만 취소하고 .gitignore 에 *.log 를 추가한 다음 다시 git add -A 합니다. 아직 커밋 전이라 이력에 남지 않습니다.

4.2 커밋 메시지 좋은 예와 나쁜 예

구분 예시
나쁜 예 fix, 수정함, asdf
좋은 예 로그인 실패 시 예외 메시지 노출 문제 수정

나쁜 예는 무엇을 왜 바꿨는지 제목만으로 알 수 없습니다. 좋은 예는 무엇이 문제였는지와 무엇을 고쳤는지가 제목에 드러납니다. 필요하면 본문에 원인과 재현 방법을 더 적습니다.

4.3 특정 날짜 이후 변경만 찾기

배포 사고 원인을 찾을 때 git log --oneline --since="2026-01-05T09:10:00+09:00" 처럼 시각을 지정합니다. 특정 파일만 좁히려면 git log --since="..." -- Main.java 로 경로를 덧붙입니다.

4.4 add -p 로 일부만 커밋하기

한 파일에서 버그 수정과 리팩터링을 같이 했다면 git add -p Main.java 를 실행합니다. git 이 변경을 덩어리(hunk)로 나눠 하나씩 보여주고, 각 덩어리마다 y(포함)·n(제외)·s(더 잘게 나누기)로 답합니다. 버그 수정 덩어리만 y 로 골라 먼저 커밋하고, 나머지는 다음 커밋으로 미룰 수 있습니다.

4.5 뒤늦게 .gitignore 를 추가했을 때

프로젝트 초반에 .gitignore 없이 커밋을 몇 번 하다가 target/ 이 이미 추적 중이라는 사실을 나중에 알아챌 수 있습니다. 이때는 .gitignore 를 추가한 뒤 git rm -r --cached target 으로 추적만 그만두고, git commit -m "target 추적 제외" 로 별도 커밋을 남깁니다. 예제 4 가 이 상황을 그대로 보여줍니다.