Develop/etc

[Git] cherry-pick 수행 시 발생 오류

연로그 2022. 1. 18. 17:30
반응형

cherry pick이란?

: 특정 커밋의 변경사항을 가져오는 작업

 


자주 발생하는 오류 목록

 

1. error: Your local changes to the following files would be overwritten by merge: ~ Please, commit your changes or stash them before you can merge.

커밋하지 않은 변경된 파일들의 작업 내역이 날아갈까봐 경고해준다.

 

해결 방법

👉 변경 사항들 커밋

 

🔻 변경된 파일이 없는데 위 에러가 발생하는 경우?

더보기
더보기

변경 사항이 스테이징 영역에 존재할 수도 있다.

 

아래 명령어를 통해 변경 사항을 조회해보자.

$ git status
사진과 같이 변경되지 않은 사항이 보인다.

 

status 확인과 함께 친절하게도 추천하는 명령어도 알려준다.

이를 반영할거라면 add를, 반영하지 않을거라면 restore 명령어를 수행한다.

$ git add 파일
$ git restore 파일
$ git restore --staged 파일  #스테이징 되돌리기

 

이후 다시 cherry-pick 명령어를 실행하면 된다.

 

2. fatal: bad object 커밋해시코드
   fatal: bad revision 커밋해시코드

merge를 원하는 커밋을 찾을 수 없어서 발생한다.

 

해결 방법 1

👉 올바른 커밋 해시 코드인지 확인

 

해결 방법2

👉 해당 커밋이 존재하는 브런치 최신화

$ git checkout 브런치명	 	#커밋 내역이 존재하는 브런치 선택
$ git pull 			#브랜치 최신화
$ git checkout 브런치 		#원래 작업중인 브런치 선택
$ git cherry-pick 커밋해시코드 	#cherry-pick

 

3. error: a cherry-pick or revert is already in progress

해결 방법

👉 hint로 주어진 cherry-pick의 옵션을 사용

 

  • --continue: 충돌 시 충돌 수정한 코드가 반영되며 cherry-pick 진행
  • --abort: cherry-pick 실행 이전 상태로 되돌리기 (cherry-pick 취소)
  • --quit: cherry-pick 실패 시 더 진행하지 않고 빠져나오기

참고

https://stackoverflow.com/questions/4264104/git-cherry-pick-says-local-changes-exist-but-git-status-says-nothing

https://stackoverflow.com/questions/57986713/git-cherry-pick-throws-a-cherry-pick-or-revert-is-already-in-progress

https://git-scm.com/docs/git-cherry-pick

반응형