Git

고급 06. Cherry-pick과 안전한 Force Push 실무 가이드

다른 브랜치의 특정 커밋만 쏙 빼오는 cherry-pick, 그리고 동료 작업을 파괴하지 않고 안전하게 강제 푸시하는 --force-with-lease 기법

· 1min read · 3 views
고급 06. Cherry-pick과 안전한 Force Push 실무 가이드

핵심 요약

다른 브랜치의 특정 버그 수정 커밋만 선별하여 가져오는 cherry-pick 활용법 및 동료의 최신 커밋 유실을 방지하는 안전한 강제 푸시(--force-with-lease)

실무에서는 브랜치 전체를 머지하지 않고 "다른 브랜치의 특정 커밋 딱 1개만 내 브랜치로 가져오고 싶은 순간"이 생깁니다. 또한 로컬에서 커밋을 정리한 뒤 원격에 푸시할 때 "동료의 코드를 덮어쓰지 않고 안전하게 강제 푸시하는 방법"을 알아야 대형 참사를 막을 수 있습니다.


1. Cherry-pick: 맛있는 체리만 쏙 골라 담기

동료가 feature/experimental 브랜치에서 15개의 커밋을 작업 중인데, 그중 "DB 연결 헬퍼 함수 버그 수정" 커밋(7a8b9c1) 딱 하나가 지금 당장 내 브랜치에도 필요합니다.

# 1. 내 작업 브랜치로 이동
(develop) $ git switch feature/order-api
Switched to branch 'feature/order-api'

# 2. 해당 커밋 1개만 내 브랜치에 쏙 복사해오기
(feature/order-api) $ git cherry-pick 7a8b9c1
[feature/order-api 9d8e7f6] fix: DB 커넥션 풀 누수 버그 수정
 1 file changed, 4 insertions(+), 1 deletion(-)

체리픽 도중 충돌(Conflict)이 났을 때

# 1. 충돌 파일 수정 후 스테이징
(feature/order-api|CHERRY-PICKING) $ git add app/Helpers/Database.php

# 2. 체리픽 계속 진행
(feature/order-api|CHERRY-PICKING) $ git cherry-pick --continue
(feature/order-api) $ 

# 또는 체리픽 취소하고 원래 상태로 복귀
(feature/order-api|CHERRY-PICKING) $ git cherry-pick --abort
(feature/order-api) $ 

2. 안전한 강제 푸시: --force-with-lease

로컬에서 rebase나 amend를 수행하면 커밋 해시가 바뀌기 때문에 일반 git push는 거절당합니다. 이때 일반 -f 대신 반드시 --force-with-lease를 사용합니다.

# 실무 필수: 동료의 최신 커밋 유실을 방지하는 안전한 강제 푸시
(feature/order-api) $ git push --force-with-lease origin feature/order-api
To https://github.com/my-org/project.git
 + 3a1f9b2...9d8e7f6 feature/order-api -> feature/order-api (forced update)

Related Docs

Comments (0)

No comments yet. Be the first to comment!

Leave a Comment

로그인 후 댓글을 남길 수 있습니다.