[IntelliJ] 인텔리제이 커밋 취소, Undo commit, Revert commit
by 무작정 개발개요
오랜만에 git을 사용하게 되며, 헷갈리는 부분과 이후 실무를 진행하며 꼭 필요한 사항이라 인텔리제이에 있는 기능 및
git 명령어인 Undo commit, Revert commit에 대해 정확히 동작 방식을 알고 사용하기 위해 작성하게 되었습니다.
위 2가지 명령어를 commit을 취소하는 명령어인데 조금 다르게 동작하기에 명확히 차이점을 알고 있어야 합니다.
필자는 현재 다니고 있는 회사에 입사 후 첫 개발 업무를 진행하면서 Revert commit 명령어를 잘 모르는 상태에서
잘못 사용해서 소스를 유실시킨 경험이 있습니다..ㅎ
이번 글은 인텔리제이(IntelliJ)와 Git이 연동된 상태 기준으로 글을 작성하였습니다.
IntelliJ + Git 연동 방법에 대한 내용은 아래의 글을 참고하면 되고, 깃허브(GitHub), 깃랩(GitLab) 모두 사용 방법은 동일합니다.
우선 Git이 연동된 기준으로 인텔리제이(IntelliJ) 좌측 하단을 보면 아래의 화면처럼 git log 창을 열 수 있고, 해당 로그에서
각 브랜치 별로 커밋 내역을 볼 수 있습니다.
⚠️ 주의할 사항
이 글은 지역 저장소(Local Repository) 기준으로 실습을 진행하였습니다.
지역 저장소(Local Repository)와 원격 저장소(Remote Repository) 차이점에 대해 잘 모르면 한번 찾아보시고 이 글을
읽어주시면 감사합니다!
또한 [ Undo commit ]과 커밋 메시지 변경(amend)은 지역 저장소에 commit 후 원격 저장소에 이미 Push 된 후에 명령어들을 적용할 경우 원격 저장소에 공유된 commit을 변경하려는 시도로, 다른 개발자와 협업을 진행하는
상태라면 추후에 병합(Merge) 작업 등 협업에 문제가 생길 수 있습니다.
따라서 이미 원격 저장소에 이미 Push가 진행된 상태인 commit을 수정하고 싶다면, [ Undo commit ] 대신 변경된 사항을
새로운 commit으로 추가하는 [ revert commit ] 명령어 방법을 추천합니다.
해당 명령어를 적용하면 원격 저장소를 안전하게 유지하면서 이전 commit을 수정할 수 있습니다.
git commit 취소 2가지 방법
위에서 한번 언급했지만 이미 인텔리제이 + git을 사용할 때 커밋(commit)을 취소하는 기능은 아래 2가지가 있습니다.
- Undo Commit
- Revert Commit
위 2가지 모두 이전 커밋의 변경 사항(커밋 기록)을 제거(취소)하지만 다른 점이 있습니다.
바로 커밋을 취소할 때 새로운 커밋을 생성 여부가 있습니다.
(1) Undo Commit
[ Undo Commit ] 명령을 수행하면 선택한 커밋을 제거 및 커밋 기록까지 삭제합니다.
즉, 작업 트리(Working Tree)를 이전 상태로 되돌리게 됩니다. 해당 명령은 로컬 저장소(Local Repository)에서만 커밋을
취소하는 명령이며 원격 저장소(Remote Repository)에는 영향을 주지 않습니다.
인텔리제이 - Undo Commit 기능을 git 명령어인 git reset 명령어를 사용하여 구현됩니다.
필자는 Undo commit 테스트를 위해 TestClass 클래스를 생성 후 Local Repository에 커밋하였습니다.
해당 커밋을 Undo commit 명령을 사용하여 커밋을 취소할 것입니다.
[실습 1]
- 취소할 커밋 선택 및 마우스 우 클릭
- Undo Commit 클릭
[실습 1] 순서대로 진행하면 위 화면과 같이 [Select Target Changelist] 팝업 창이 출력됩니다.
여기서 바로 [Ok] 버튼을 누르면 선택한 커밋 기록이 삭제됩니다.
위 팝업 창을 보면 Name에 Changes가 선택된 것을 볼 수 있습니다. Changes는 인텔리제이에 git을 연동하였을 때
커밋하지 않은 변경 내역을 관리할 수 있게 해 줍니다. [ Undo Commit ]을 수행하면 위 Changes에 커밋을 취소하고
해당 커밋에서 변경된 내역들을 Changes에 들어갑니다.
이제 [Ok] 버튼을 클릭해서 커밋을 취소합니다.
위 화면은 [Undo Commit] 명령 수행 결과 즉, 커밋을 취소한 결과입니다.
[ Undo commit 테스트를 위해 커밋 ] 메시지로 작성된 커밋 내역이 지역 저장소(Local Repository)에서 삭제가 되고,
해당 커밋에 들어있던 변경 내역이 [Changes]에 들어간 것을 볼 수 있습니다.
즉, 커밋을 취소하면서 해당 커밋 기록까지 삭제 후 이전 작업 트리(Working Tree)로 되돌린 것을 볼 수 있습니다.
(2) Revert Commit
위 [ Undo Commit ]을 보면 커밋을 취소함과 동시에 커밋 내역까지 삭제하는 것을 볼 수 있습니다.
반면, [ Revert Commit ] 은 기존 커밋 내역을 그대로 유지하는 동시에 해당 커밋을 되돌리기 위해 새로운 커밋을 생성합니다.
쉽게 말하자면 커밋 취소할 내역을 그대로 남기고, 해당 커밋의 작업 내역을 취소(이전 상태로 되돌리는 것)하는
새로운 커밋을 생성한다고 말할 수 있습니다.
물론 작업 트리(Working Tree)에도 Revert Commit을 사용한 기록에 남게 됩니다.
인텔리제이 - Revert Commit 기능을 git 명령어인 git revert 명령어를 사용하여 구현됩니다.
이전과 동일하게 TestClass 생성 후 Revert 테스트를 위해 커밋해 둔 상태입니다.
[ Reveret Commit ] 은 위 [ Undo Commit ]과 다르게 클릭하면 즉시 실행됩니다.
[실습 2]
- 취소할 커밋 선택 및 마우스 우 클릭
- Revert Commit 클릭
위 화면은 [ Revert Commit ] 명령 수행 결과 화면입니다.
[ Undo Commit ]과 다른 점을 볼 수 있습니다. 우선 커밋 기록이 삭제되지 않고, Revert 명령을 수행한 새로운 커밋 기록이
생긴 것을 볼 수 있습니다. 다음으로 취소한 커밋 내역에 있는 변경 사항들이 [Changes]에 들어가지 않고 삭제되는 것을
볼 수 있습니다.
만약 [ Revert Commit ]을 실수로 잘못 눌렀다면 Revert 수행 후 생긴 커밋 내역 기준으로 다시 [ Revert Commit ]을 실행하면 다시 원상 복구가 가능합니다.
'IDE & 개발 Tool > IntelliJ(인텔리제이)' 카테고리의 다른 글
[IntelliJ] 인텔리제이에서 Eclipse 프로젝트 사용 방법 Tip (0) | 2023.11.16 |
---|---|
[IntelliJ] 실행 시 최근 종료한 프로젝트 바로 실행하지 않도록 설정 (0) | 2023.07.24 |
[IntelliJ + Maven] Could not create the Java virtual machine (0) | 2023.06.30 |
[IntelliJ] Error launching IDEA Improperly specified VM option 해결 방법 (0) | 2023.06.29 |
[IntelliJ] 인텔리제이 메모리 설정 - VM Option 설정 (0) | 2023.02.02 |
블로그의 정보
무작정 개발
무작정 개발