깃 체리픽 정말 쉽게 정리!!!

2025. 8. 6. 13:20Git

728x90

📜 Git Cherry-pick 완전 정리

🧠 무엇인가?

**git cherry-pick**은
다른 브랜치의 특정 커밋만 골라서
현재 브랜치에 적용하는 명령이옵니다.


🛤️ 언제 쓰는가?

  • 어떤 브랜치에 들어있는 일부 커밋만 따로 가져오고 싶을 때
  • PR 없이 특정 기능만 긴급 반영하고자 할 때
  • 복잡한 브랜치 내에서 특정 기능만 정제하여 재사용하고자 할 때

🪜 전체 절차

✅ 1단계. 적용할 커밋 해시 확인

git log branch-name --oneline
 

예: git log feature/abc --oneline

→ 원하는 커밋의 해시값을 복사 (예: 8ee796e)


✅ 2단계. 적용 대상 브랜치로 이동

git checkout target-branch
 

예: git checkout main

 

또는 새 브랜치를 만들어 정제 작업 가

git checkout -b feat/clean-pick

✅ 3단계. cherry-pick 실행

일반 커밋

git cherry-pick <commit-hash>

git cherry-pick <commit-hash>
 
 

여러 개 한 번에

git cherry-pick <hash1> <hash2> ...

연속된 범위

git cherry-pick a1b2c3^..d4e5f6

병합 커밋 (Merge Commit)

git cherry-pick -m 1 <merge-commit-hash>

-m 1: 첫 번째 부모(기준 브랜치 기준)
-m 2: 두 번째 부모(머지된 쪽 기준)


✅ 4단계. 충돌 발생 시 처리

충돌 메시지가 뜨면:

error: could not apply <hash>
 

🔧 다음을 순서대로 수행

# 1. 충돌난 파일 수정
# 2. 수정한 파일 스테이징
git add <파일경로>

# 3. cherry-pick 계속
git cherry-pick --continue
 

❌ 중단하고 싶으면

git cherry-pick --abort

✅ 5단계. 적용 결과 확인

git log --oneline

cherry-pick된 커밋이 맨 위에 있으면 성공


✅ 6단계. 원격 푸시

git push origin <브랜치이름>
git push -u origin <브랜치이름>

🧭 예시 시나리오

상황:

  • 기능 브랜치 feature/anomaly 에서
  • 커밋 b3b2474와 8ee796e만
  • 정제된 새 브랜치 feat/clean-insight-init으로 가져오고자 함
# 1. 기준 브랜치에서 새 브랜치 생성
git checkout base
git checkout -b feat/clean-insight-init

# 2. 병합 커밋 cherry-pick (병합인 경우)
git cherry-pick -m 1 b3b24747cdfaa7b1cfcf42ab73edee071145e07c

# 3. 개별 커밋도 따로
git cherry-pick 8ee796eeade8b2549765b949cb80d4ae3ea65fb7

# 4. 충돌 시 해결 → git add → git cherry-pick --continue

# 5. 원격 푸시
git push -u origin feat/clean-insight-init

🔚 결론

일반 커밋 하나 가져오기 git cherry-pick <해시>
병합 커밋 가져오기 git cherry-pick -m 1 <해시>
충돌 해결 후 계속 git cherry-pick --continue
중단하고 취소 git cherry-pick --abort
푸시 git push origin <브랜치>

 

728x90