git commit 쪼개기

수호·2025년 12월 10일
post-thumbnail

📌 PR 사고(?)와 해결 과정 정리

이번에 PR을 올리던 중,
한 commit에 build 관련 변경과 feat 기능 구현이 섞여 있는 문제를 뒤늦게 발견했다.
이미 원격 저장소에 push까지 완료하고 PR까지 생성한 상태라 더 아쉬움이 컸다.

결국 팀장님께 상황을 설명드렸고,
PR은 Decline 처리한 뒤 작업을 다시 정리하기로 결정했다.

다행히 커밋 수가 많지 않아 수정하는 데 오래 걸리진 않았다.
가장 최근 feat commit을 기준으로:
• build 관련 파일
• feat 관련 파일

이렇게 나누어 커밋을 분리했고,
이 기회에 함께 기존 commit message도 전체적으로 정리했다.

정리된 상태로 다시 PR을 올렸고,
팀장님이 OK를 주셔서 develop 브랜치에 merge까지 완료!

git add -p 로 부분 스테이징하여 커밋 쪼개기

  1. 변경확인
git status

git reset HEAD^

╭─ ~/Desktop/git/beaverpay-mobile-android/beaverpay-mobile-android feature/MTT-81-QR 
╰─❯ git reset HEAD^
리셋 뒤에 스테이징하지 않은 변경 사항:
M	app/src/main/java/com/bw/bp/navigation/AppNavGraph.kt
M	gradle/libs.versions.toml
M	presentation/src/main/java/com/bp/presentation/viewmodel/QRViewModel.kt
M	reader/build.gradle.kts
D	reader/src/main/java/com/bp/reader/ErrorCode.kt
M	ui/src/main/java/com/bp/ui/view/QRScreen.kt
  1. 부분적으로 스테이징 (patch 모드)
git add -p

작업 내용
╭─ ~/Desktop/git/beaverpay-mobile-android/beaverpay-mobile-android feature/MTT-81-QR ⇣11 !5
╰─❯ git add -p reader/build.gradle.kts gradle/libs.versions.toml
diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml
index 35b8d49..f00be0a 100644
--- a/gradle/libs.versions.toml
+++ b/gradle/libs.versions.toml
@@ -25,6 +25,7 @@ navCompose = "2.9.5"
 # Navigation 적용 [-]

 # Room 적용 [+]
+playServicesCodeScanner = "16.1.0"
 roomKtx = "2.8.4"
 roomRuntime = "2.8.4"
 ksp = "2.2.20-2.0.4"
(1/2) Stage this hunk [y,n,q,a,d,j,J,g,/,e,?]? y
@@ -96,6 +97,7 @@ androidx-navigation-compose = { module = "androidx.navigation:navigation-compose
 # Retrfit 적용 [+]
 logging-interceptor = { module = "com.squareup.okhttp3:logging-interceptor", version.ref = "loggingInterceptor" }
 okhttp = { module = "com.squareup.okhttp3:okhttp", version.ref = "okhttp" }
+play-services-code-scanner = { module = "com.google.android.gms:play-services-code-scanner", version.ref = "playServicesCodeScanner" }
 retrofit = { module = "com.squareup.retrofit2:retrofit", version.ref = "retrofit" }
 # Retrfit 적용 [-]

(2/2) Stage this hunk [y,n,q,a,d,K,g,/,e,?]? y

diff --git a/reader/build.gradle.kts b/reader/build.gradle.kts
index 683db27..a34c763 100644
--- a/reader/build.gradle.kts
+++ b/reader/build.gradle.kts
@@ -19,6 +19,7 @@ dependencies {

     // ML Kit Barcode Scanning (권장)
     implementation(libs.barcode.scanning)
+    implementation(libs.play.services.code.scanner)

     //Camera
     implementation(libs.androidx.camera.core)
(1/1) Stage this hunk [y,n,q,a,d,e,?]? y

╭─ ~/Desktop/git/beaverpay-mobile-android/beaverpay-mobile-android feature/MTT-81-QR ⇣11 +2 !3
╰─❯ git commit -m "build: QR Scanner lib 추가"
[feature/MTT-81-QR b81a6dd] build: QR Scanner lib 추가
 2 files changed, 3 insertions(+)
  1. 이제 hunk 마다 질문받게 됨
Stage this hunk [y,n,q,a,d,j,J,g,/,e,?]?
의미
y이 부분을 커밋에 포함
n포함하지 않음 (다음 hunk로 넘어감)
shunk를 더 작은 조각으로 split
e직접 편집
q
  1. 원하는 부분만 스테이징한 후
git commit -m "first commit message"
  1. 남은 변경 다시 분할해서 커밋
git add -p
git commit -m "second commit message"

필요한 만큼 반복.

profile
처음부터 다시 시작!!

0개의 댓글