GitLab에서 후회 없는 코드 되돌리기: git revert 완벽 가이드 mymaster, 2024년 06월 16일 개발을 하다 보면 예전 코드로 돌아가야 하는 순간이 찾아옵니다. 실수로 작동하지 않는 코드를 배포했거나, 새로운 기능 추가 후 예상치 못한 문제가 발생했을 때 등 다양한 이유로 우리는 “되돌리기”라는 마법을 찾게 됩니다. GitLab은 강력한 버전 관리 시스템인 Git을 기반으로 하여 이러한 문제를 해결하는 데 유용한 도구인 git revert를 제공합니다. 하지만 git revert는 강력한 만큼 잘못 사용하면 새로운 문제를 야기할 수 있습니다. 이 글에서는 GitLab 환경에서 git revert를 이용해 이전 코드 상태로 안전하게 되돌리는 방법을 초보자도 이해하기 쉽게 단계별로 설명합니다. 또한, 자주 묻는 질문에 대한 답변과 추가적으로 알아두면 유용한 정보도 제공하여 git revert를 완벽하게 이해하고 실무에 활용할 수 있도록 돕습니다. 이 글을 읽고 나면 여러분은 더 이상 과거의 실수에 발목 잡히지 않고 자신 있게 코드를 수정하고 관리할 수 있게 될 것입니다. 1. git revert란 무엇인가요? git revert는 Git에서 제공하는 명령어로, 커밋 기록을 삭제하는 대신 특정 커밋의 변경 사항을 되돌리는 새로운 커밋을 생성합니다. 즉, 과거의 커밋을 지우는 것이 아니라, 해당 커밋의 반대 작업을 수행하는 새로운 커밋을 추가하여 결과적으로 코드를 특정 시점으로 되돌리는 것입니다. 1.1 삭제 vs. 되돌리기: 왜 git revert를 사용해야 할까요? Git에서 과거 커밋을 되돌리는 방법은 크게 두 가지입니다. 하나는 git reset 명령어를 사용하여 커밋 기록 자체를 삭제하는 방법이고, 다른 하나는 git revert 명령어를 사용하여 되돌리려는 커밋의 반대 작업을 수행하는 새로운 커밋을 생성하는 방법입니다. git reset (삭제): 이 명령어는 지정된 커밋으로 브랜치의 히스토리를 이동시키고, 그 이후의 커밋들을 삭제합니다. 겉으로 보기에는 간편해 보이지만, 이미 다른 사람들과 공유된 히스토리를 변경하기 때문에 협업 환경에서는 매우 위험한 방법입니다. git revert (되돌리기): 이 명령어는 기존 커밋 기록을 유지하면서 특정 커밋의 변경 사항을 취소하는 새로운 커밋을 만듭니다. 이렇게 하면 누가 언제 어떤 코드를 작성했는지에 대한 모든 기록이 그대로 남아있기 때문에 협업 환경에서 안전하게 사용할 수 있습니다. git revert는 기존 커밋을 삭제하지 않고 되돌리기 때문에, 협업 과정에서 발생할 수 있는 혼란을 최소화하고 안전하게 코드를 관리할 수 있도록 돕습니다. 1.2 git revert의 장점 git revert를 사용하면 다음과 같은 장점이 있습니다. 안전성: 기존 커밋을 삭제하지 않고 새로운 커밋을 생성하기 때문에 데이터 손실 위험이 적습니다. 협업: GitLab과 같은 협업 환경에서 안전하게 사용할 수 있습니다. 다른 사람들이 이미 복제한 커밋을 되돌리더라도 히스토리 충돌이 발생하지 않습니다. 추적 가능성: 되돌리기 작업 또한 하나의 커밋으로 기록되기 때문에, 누가 언제 어떤 이유로 되돌리기를 수행했는지 쉽게 추적할 수 있습니다. 선택적 되돌리기: 특정 파일이나 코드 라인만 선택하여 되돌릴 수 있습니다. 2. GitLab에서 git revert를 사용하는 방법 GitLab에서 git revert를 사용하는 방법은 다음과 같습니다. 1단계: GitLab에서 프로젝트를 복제합니다. GitLab 웹사이트에서 되돌리려는 커밋이 있는 프로젝트로 이동합니다. 프로젝트 페이지 오른쪽 상단에 있는 “Clone” 버튼을 클릭합니다. “Clone with HTTPS” 또는 “Clone with SSH” 탭에서 복제 URL을 복사합니다. 로컬 컴퓨터에서 터미널 또는 명령 프롬프트를 열고, 프로젝트를 복제할 디렉토리로 이동합니다. git clone 명령어와 함께 복사한 URL을 입력하여 프로젝트를 복제합니다. 예: `git clone https://gitlab.com/username/project-name.git` 2단계: 로컬 저장소에서 되돌리려는 커밋을 확인합니다. 터미널에서 git log 명령어를 사용하여 커밋 기록을 확인합니다. 되돌리려는 커밋의 해시 값을 찾습니다. 해시 값은 커밋 메시지 앞에 있는 긴 문자열입니다. 3단계: git revert 명령어를 사용하여 커밋을 되돌립니다. 터미널에서 git revert <커밋 해시> 명령어를 입력합니다. <커밋 해시> 부분은 실제 되돌리려는 커밋의 해시 값으로 바꿔야 합니다. 예: git revert a1b2c3d 4단계: 커밋 메시지를 확인하고 수정합니다. git revert 명령어를 실행하면 기본 커밋 메시지가 있는 텍스트 편집기가 열립니다. 되돌리기 작업에 대한 설명을 추가하거나 기본 메시지를 그대로 사용할 수 있습니다. 변경 사항을 저장하고 편집기를 닫습니다. 5단계: 변경 사항을 GitLab에 푸시합니다. 터미널에서 git push origin <브랜치 이름> 명령어를 사용하여 변경 사항을 GitLab에 푸시합니다. <브랜치 이름> 부분은 작업 중인 브랜치 이름으로 바꿔야 합니다. 예: git push origin main 3. git revert 사용 예시 3.1 특정 커밋 되돌리기 다음은 커밋 해시 값이 a1b2c3d인 커밋을 되돌리는 예시입니다. git revert a1b2c3d 3.2 여러 커밋 되돌리기 여러 커밋을 되돌리려면 각 커밋의 해시 값을 순서대로 입력합니다. 예를 들어, 커밋 a1b2c3d 이후의 모든 변경 사항을 되돌리려면 다음 명령어를 사용합니다. git revert a1b2c3d^..HEAD 참고: ^ 기호는 특정 커밋의 바로 이전 커밋을 나타내며, HEAD는 현재 브랜치의 가장 최신 커밋을 나타냅니다. 3.3 특정 파일 또는 라인 되돌리기 특정 파일 또는 라인만 되돌리려면 -p 옵션을 사용합니다. 예를 들어, index.html 파일에서 특정 라인만 되돌리려면 다음 명령어를 사용합니다. git revert -p a1b2c3d -- index.html 3.4 충돌 해결 되돌리려는 커밋과 현재 브랜치 사이에 충돌이 발생하면, Git에서 충돌 메시지를 표시합니다. 충돌을 해결하려면 다음 단계를 따르세요. 충돌이 발생한 파일을 열고 <<<<<<< HEAD, =======, >>>>>>> <커밋 해시> 마커를 찾습니다. 해당 부분을 원하는 코드로 수정합니다. 수정한 파일을 저장합니다. git add <파일 이름> 명령어를 사용하여 수정한 파일을 스테이징 영역에 추가합니다. git revert --continue 명령어를 사용하여 되돌리기 작업을 계속합니다. 4. 자주 묻는 질문 (FAQ) 4.1 git revert와 git reset의 차이점은 무엇인가요? git revert는 특정 커밋을 되돌리는 새로운 커밋을 생성하는 반면, git reset은 지정된 커밋으로 브랜치의 히스토리를 이동시키고 그 이후의 커밋들을 삭제합니다. 협업 환경에서는 히스토리 변경을 최소화하기 위해 git revert를 사용하는 것이 좋습니다. 4.2 git revert를 사용하여 원격 저장소에 이미 푸시된 커밋을 되돌릴 수 있나요? 네, 가능합니다. git revert를 사용하여 커밋을 되돌린 후, 변경 사항을 원격 저장소에 푸시하면 됩니다. 하지만 이미 다른 사람들이 해당 커밋을 기반으로 작업한 경우, 충돌이 발생할 수 있습니다. 4.3 git revert를 취소하려면 어떻게 해야 하나요? git revert 명령어를 사용하여 생성된 커밋을 다시 되돌리면 됩니다. 즉, 되돌리기 작업을 되돌리려면 되돌리기 커밋에 대한 git revert 명령어를 다시 실행하면 됩니다. 5. 결론 git revert는 GitLab 환경에서 과거의 실수를 바로잡고 안전하게 코드를 관리할 수 있는 강력한 도구입니다. 이 글에서는 git revert의 개념부터 사용 방법, 자주 묻는 질문까지 자세히 알아보았습니다. 이제 여러분은 이 강력한 도구를 사용하여 자신 있게 코드를 수정하고 관리하며 프로젝트를 성공적으로 완료할 수 있을 것입니다. 추가 정보: GitLab 공식 문서: https://docs.gitlab.com/ Git 공식 문서: https://git-scm.com/ 주의 사항: git revert 명령어를 사용하기 전에 항상 로컬 저장소를 백업하는 것이 좋습니다. git revert 명령어를 사용하여 변경 사항을 푸시하기 전에, 다른 팀원들에게 해당 내용을 알리는 것이 좋습니다. 이 글이 여러분의 GitLab 프로젝트에 도움이 되기를 바랍니다! 목차 Toggle 1. git revert란 무엇인가요?1.1 삭제 vs. 되돌리기: 왜 git revert를 사용해야 할까요?1.2 git revert의 장점2. GitLab에서 git revert를 사용하는 방법3. git revert 사용 예시3.1 특정 커밋 되돌리기3.2 여러 커밋 되돌리기3.3 특정 파일 또는 라인 되돌리기3.4 충돌 해결4. 자주 묻는 질문 (FAQ)4.1 git revert와 git reset의 차이점은 무엇인가요?4.2 git revert를 사용하여 원격 저장소에 이미 푸시된 커밋을 되돌릴 수 있나요?4.3 git revert를 취소하려면 어떻게 해야 하나요?5. 결론 post