아! 여기가 아닌데!
우테코에서는 1단계 미션이 마무리되면
나의 모든 커밋 기록이 우테코 공식 계정 본인 브랜치에 하나의 커밋으로 merge 된다.
이렇게 머지된 브랜치를 본인의 로컬 브랜치로 복사하여 2단계를 진행해야 한다.
1단계에 커밋한 로그들은 하나의 커밋으로 남아있어야 한다.
하지만 여기서 미련한 나는 내가 구현하던 로컬 저장소에 이어서 미션을 진행했다.
어디까지가 1단계 커밋이고 어디까지가 2단계 커밋인지 드러나지 않는 상황.
2단계 미션을 제출하는 과정에서 나의 실수를 깨달았다.
그러나 이미 너무 멀리왔기에 돌이킬 수 없었다.
리뷰어님께 양해를 구하고 통째로 커밋할까? 새로운 브랜치 파서 다시 하나하나 커밋할까?
별의별 방법이 다 떠올랐다.
하지만 여기서 실낱같은 희망.
깃이 커밋의 일부를 가져오는 기능을 갖고 있을 것이라는 촉이 왔고,
검색해보니 "체리를 따듯이" 원하는 변경 사항만 골라 가져오는 cherry-pick
이 등장한다. 유레카.
사용 방법
사용 방법은 어렵지 않다.
먼저, 붙여넣기를 원하는 브랜치로 이동한다.
git checkout [브랜치명]
하나의 커밋을 복사하고 싶다면,
git cherry-pick [커밋해시값]
여러개의 커밋을 복사하고 싶다면,
git cherry-pick [커밋해시값1] [커밋해시값2] [커밋해시값3]
특정 범위에 해당하는 커밋을 복사하고 싶다면,
git cherry-pick [커밋해시값1]..[커밋해시값2]
명령어를 입력해주면 된다.
(여기서 중요한 건 [커밋해시값1]의 다음 커밋부터 [커밋해시값2]까지가 적용된다. 나도 알고 싶지 않았다)
--continue & --abort
아마 사용하는 것보다 어려운 것은 충돌을 해결하는 일일 것이다.
커밋 사항을 가져오는 과정에서도 당연히 충돌 가능성이 존재한다.
--continue
충돌 메시지를 확인한 후 충돌을 해결하였다면git add
를 통해 수정된 파일을 추가하고,--continue
옵션을 통해 이어서 cherry-pick을 진행할 수 있다.
git cherry-pick --continue
--abort
cherry-pick을 중단하고 싶다면 --abort
옵션을 이용해 cherry-pick을 중단할 수 있다.
cherry-pick을 실행하기 이전의 상태로 코드가 돌아간다.
git cherry-pick --abort
결론
하늘이 무너져도 솟아날 구멍은 있다 ^^
실수를 수습하는 과정에서 이것저것 배울 수 있는 게 많았다.
확실히 부닥치니까 공부하게 된다.
의미있는 실수였다.
✅ [번외] 커밋 해시값 확인하는 방법
커밋 주소는 로컬에서 git log 명령어를 통해,

또는 원격에 업로드했을 경우 깃허브의 커밋 기록을 통해 알아낼 수 있다.

'🌱 우아한테크코스 6기' 카테고리의 다른 글
[코리스토텔레스] 패키지 구조: 계층형 구조 vs 도메인형 구조 (0) | 2024.07.28 |
---|---|
[인프라] AWS EC2 (0) | 2024.07.22 |
[TroubleShooting] 에러 해결 과정에서 알게 된 @DirtiesContext 동작 방식 (3) | 2024.05.07 |
[우아한테크코스] 2월 한달 회고 (32) | 2024.03.12 |
[우아한테크코스] 6기 최종합격 회고 (3) | 2024.02.26 |