본문 바로가기
Dev/Git

[GitHub] 6. commit 이력 조작하는 법 (cherry-pick, reset, revert)

by YummYum 2023. 8. 31.

1. git cherry-pick : 다른 작업 브랜치의 commit을 작업 브랜치에 추가

git cherry-pick <추가하려는 commit 체크섬>

cherry-pick은 commit을 생성한 후 현재 작업 브랜치가 잘못됐다는 것을 발견했을 때, 운영에서 에러가 났는데 해당 문제를 해결할 수 있는 코드가 다른 브랜치에 있을 경우 해당 commit을 가져올 때 등 사용합니다. 

 

** 만약 cherry-pick 과정 중 충돌이 날 경우 충돌이 난 파일을 수정합니다. 완료된다면 해당 명령어들을 실행해 작업을 완료하면 됩니다. 

git add .
git cherry-pick --continue

 

충돌이 나서 해당 작업을 중단한다면 해당 명령어를 실행합니다.

git cherry-pick --abort

 

2. git reset : 이미 생성된 commit들을 취소하고, 이전 commit으로 최종 commit 변경

reset은 기능이 변경되어 일부 기능을 제외할 때 사용합니다.

git reset <이전 commit 체크섬>
  1. 옵션 --hard : 어떤 이력도 지우고 이전 commit으로 돌아갈 때 사용합니다.
  2. 옵션 --mixed : 작업상태는 작업 디렉터리에 있고 이전 commit으로 돌아갈 때 사용합니다.
  3. 옵션 --soft : 작업상태는 그대로 스테이지에 있고 이전 commit으로 돌아갈 때 사용합니다.

 

** 만약 원격저장소에 반영하려면 --force 옵션을 사용해 푸시하면 됩니다. (만약 사용하더라도 반드시 나만 쓰는 브랜치에서만 해야 합니다.)

 

3. git revert : 변경 사항 되돌리는 commit 생성

이미 생성된 commit을 취소하는 다른 방법으로 reset과의 차이점은 취소하고자 하는 commit의 변경 사항을 되돌리는 새로운 commit이 생성됩니다. 되돌리는 이력도 확인할 수 있어 reset보다 사용을 권장하는 편입니다.

git revert <되돌리려는 commit 체크섬>

git revert <되돌리기 시작할 commit 체크섬>...<되돌려는 commit 체크섬>

 

댓글