Programming

Git에서 특정 커밋으로 원복하기

느리게 걷는 즐거움 2024. 7. 24. 18:23
반응형

Git에서 특정 커밋으로 원복하기

개발을 하다 보면 특정 시점으로 돌아가야 할 때가 있습니다. Git을 사용하면 특정 커밋으로 쉽게 원복할 수 있습니다. 이 글에서는 Git에서 특정 커밋으로 원복하는 방법을 단계별로 설명하겠습니다.

커밋 해시 확인하기

먼저, 원복하려는 특정 커밋의 해시를 확인해야 합니다. 커밋 해시를 확인하는 방법은 다음과 같습니다:

git log

이 명령어를 실행하면 커밋 히스토리가 출력됩니다. 각 커밋에는 고유한 해시가 있습니다. 예를 들어:

commit abc1234
Author: John Doe <johndoe@example.com>
Date:   Tue Jul 20 14:53:22 2023 -0700

    Fixed bug in user authentication

여기서 `abc1234`가 커밋 해시입니다.

특정 커밋으로 체크아웃하기

특정 커밋으로 코드를 원복하려면 해당 커밋으로 체크아웃합니다. 예를 들어, `abc1234` 커밋으로 체크아웃하려면 다음 명령어를 사용합니다:

git checkout abc1234

이 명령어를 실행하면 해당 커밋 시점으로 코드가 변경되지만, 'detached HEAD' 상태가 됩니다. 이 상태에서는 변경 사항을 커밋할 수 있지만, 기존 브랜치에 영향을 주지 않습니다.

특정 커밋으로 브랜치 리셋하기

기존 브랜치를 특정 커밋으로 되돌리고 싶다면, `reset` 명령어를 사용합니다. 예를 들어, 현재 브랜치를 `abc1234` 커밋으로 리셋하려면:

git reset --hard abc1234

이 명령어는 현재 브랜치의 히스토리를 `abc1234` 커밋으로 되돌립니다. `--hard` 옵션은 작업 디렉토리의 파일들도 해당 커밋 상태로 변경합니다.

주의: 이 작업은 되돌릴 수 없으므로, 신중하게 사용해야 합니다.

`revert` 명령어를 사용하여 특정 커밋 원복하기

`revert` 명령어는 기존 히스토리를 유지하면서 특정 커밋을 취소하는 방법입니다. 예를 들어, `abc1234` 커밋을 원복하려면:

git revert abc1234

이 명령어는 `abc1234` 커밋의 변경 사항을 취소하는 새로운 커밋을 생성합니다. 이 방법은 기존 히스토리를 보존하므로, 협업 환경에서 안전하게 사용할 수 있습니다.

유용한 명령어 요약

   
작업 명령어
커밋 히스토리 확인 git log
특정 커밋으로 체크아웃 git checkout <커밋해시>
특정 커밋으로 브랜치 리셋 git reset --hard <커밋해시>
특정 커밋 원복 (revert) git revert <커밋해시>



반응형