5.4 Reset, Revert, Cherry-pick
약 6분
읽기 설정
글자 크기
줄 간격
글꼴
5.4 Reset, Revert, Cherry-pick
Git에서는 프로젝트의 버전을 관리하면서 여러 가지 실수를 할 수 있습니다. 이러한 실수를 보완하는 데 유용한 세 가지 명령어가 바로 reset, revert, 그리고 cherry-pick입니다. 각 명령어는 그 목적과 사용되는 상황이 다르며, 이를 적절하게 사용하는 것이 중요합니다.
Reset
reset 명령어는 특정 커밋으로 HEAD 포인터를 되돌리는 명령으로, 로컬 작업을 깔끔하게 정리할 때 유용합니다. reset을 사용할 경우, 되돌리고자 하는 상태까지의 모든 커밋과 변경사항이 사라질 수 있으니 주의해야 합니다.
예제
가령, 우리가 만든 5개의 커밋이 있다고 가정해봅시다. git log 명령어로 보면 아래와 같습니다:
commit 5d6a79 (HEAD -> main)
Author: User <user@example.com>
Date: Mon Oct 1 11:00:00 2023 +0900
Commit 5
commit 4f3a22
Author: User <user@example.com>
Date: Mon Oct 1 10:00:00 2023 +0900
Commit 4
이 상태에서 3번째 커밋으로 돌아가고 싶다면, 다음과 같이 명령을 실행합니다:
git reset --hard HEAD~2
이 명령어를 실행하면 HEAD는 3번째 커밋으로 이동하며 4번째와 5번째 커밋은 삭제됩니다. 따라서 프로젝트 상태가 초기 상태로 돌아갑니다.
Revert
revert 명령어는 특정 커밋의 변경사항을 되돌리는 새로운 커밋을 만드는 방법으로, 기존의 커밋을 유지하면서 변경만 되돌리기 위해 사용됩니다. 이 경우 commit history는 변경되지 않고, 새로운 커밋이 추가됩니다.
예제
예를 들어, 마지막 커밋을 되돌리고 싶다면, 아래와 같이 명령어를 사용할 수 있습니다:
git revert HEAD
이 명령어는 HEAD의 변경사항을 반영한 새로운 커밋을 생성하여, 프로젝트 상태를 복원합니다.
Cherry-pick
cherry-pick 명령어는 특정 커밋을 다른 브랜치에 적용하고 싶을 때 사용하는 커맨드입니다. 이는 여러 개발자 간의 협업 시 유용한 기능으로, 특정한 기능 추가 또는 버그 수정을 별도의 브랜치로 가져오는 데 사용됩니다.
예제
예를 들어, 브랜치 A에서 특정 커밋을 가져오고 싶을 때는 다음과 같은 명령어를 사용합니다:
git cherry-pick <commit-hash>
<commit-hash>는 가져오고자 하는 커밋의 해시 값입니다. 이렇게 하면 해당 커밋의 내용이 현재 브랜치로 적용됩니다.
실습
이제 reset, revert, cherry-pick을 실제로 사용해보는 실습을 진행합니다.
- 저장소를 생성하고, 초기 커밋을 만듭니다.
- 여러 개의 커밋을 추가한 후, 각 명령어를 실습해보세요.
git reset,git revert,git cherry-pick을 사용하여 결과를 확인합니다.
협업에서의 중요한 점
협업 시에는 이러한 명령어 사용 시 주의해야 할 사항이 많습니다. 예를 들어, reset을 사용하여 커밋을 삭제하면 협업자와의 기록에 혼란을 줄 수 있기 때문에 꼭 필요한 단계에서만 조심스럽게 사용해야 합니다.
또한, revert는 공동 작업자가 변경을 되돌린 것을 쉽게 볼 수 있어, 상황 파악이 쉽습니다. 결국 협업에서의 신뢰는 기록을 어떻게 관리하느냐에 따라 크게 좌우됩니다.
정리
reset, revert, cherry-pick은 각기 다른 상황에서 유용하게 사용됩니다.
- Reset: 로컬에서 커밋을 제거하고 이전 상태로 돌아가고 싶을 때 사용.
- Revert: 기존 커밋은 유지하면서 변경사항만 되돌리고 싶을 때 사용.
- Cherry-pick: 특정한 커밋을 다른 브랜치에 적용하고자 할 때 유용.
각 명령어의 특징을 잘 이해하고, 상황에 따라 적절히 활용하면 Git을 통한 버전 관리와 협업이 훨씬 원활해질 것입니다.
댓글 0
아직 댓글이 없습니다. 첫 댓글을 남겨보세요.