origin에 이미 push한 commit 되돌리기

지구·2023년 8월 3일
0

Git, Github 정리

목록 보기
19/19

알고리즘 스터디를 진행하는 중에 다음주 PR에 올려야할 commit을 push해버려서 이번주 PR에 올라가는 일이 발생했다.

위 커밋만 이번주 PR에 올라가야하는데

이 두번째 사진에 있는 커밋도 올라가버렸다....뜨헉😭

그냥 기록용으로 올리는 레포지토리라면 상황없겠지만
스터디원들이 올릴 각자 PR에 코드 리뷰를 남기는 과정을 거쳐야하기 때문에
이전 PR에 커밋이 같이 올라가버리면 스터디원들이 위 4개의 코드는 확인하기 번거로워지기 때문에 커밋을 되돌려야하는 상황이 되었다.

revert VS reset

잘 못 올린 커밋을 아예 기록도 안남기고 없애고 싶어서 reset을 사용하고 싶었는데 검색해보니 혼자서 작업하거나 로컬에서만 커밋이 올라갔다면 reset을 사용해도 문제가 없지만 원격에 push한 내용을 변경하려면 force push해야하며 원격에서도 막아놓는 것이 일반적이며 협업할 때는 절대 피해야하는 것이 force push라는 것을 알게되었다.
참고한 블로그

revert를 이용해 되돌리기

따라서, revert를 이용해서 되돌린 기록을 남기고 새로 커밋을 한 뒤에 다음주에 PR을 올리기로 했다.

git log로 커밋 로그 확인

먼저, git log를 통해 커밋 로그를 확인한다.

위에 부터 가장 최신 커밋으로 나는 맨 아래에 있는 [BOJ] 트리 / 2023.08.02(수) / 5까지만 있는 상태로 돌아가야한다.

revert 사용하기

revert와 reset에 대해 기록한 나의 블로그 '03. GIT 으로 버전 되돌리기'

위 게시물에서 확인할 수 있듯이 revert는 되돌리고 싶은 커밋 이름을 입력해줘야한다.

git revert [되돌릴 커밋 hash]

되돌릴 커밋의 범위를 지정해서 한번에 여러개의 커밋을 되돌릴 수도 있지만 순차적으로 하나씩 되돌리는 방법으로 먼저 시도하기로 한다.

git revert ca0517

위 코드를 입력하면 아래와 같은 화면이 나온다.

revert를 쓰면 버전을 되돌아가는 것도 하나의 commit 으로서 기록되기 때문에, 커밋 메세지를 써달라고 표시가 된 것이다.
만약 따로 수정하지 않고 기본으로 쓰고 싶다면, ESC 버튼 누른 후에 → :wq 라고 입력 -> 엔터하면 된다.

그리고 revert되었다는 터미널 내용과 함께 마지막에 커밋올린 파일이 삭제된 것을 확인할 수 있다.

최종적으로 4번의 revert 과정을 거쳐서 아래와 같이 4번의 되돌리기 과정이 수행되었다

위 과정을 거쳐서 새로 추가해서 커밋했던 파일 4개는 삭제가 되었다.
revert 커밋을 다시 push하면 이번주 PR에는 정렬과 관련된 파일은 올라가지 않고
이제 복사해두었던 4개의 파일을 원래 경로에 추가하여 다시 커밋을 올리면 (이번주 PR 머지할 때까지 절대 push하지 않기!!!) 다음주 PR에 정렬 파일을 올릴 수 있다.

profile
프론트엔트 개발자입니다 🧑‍💻

1개의 댓글

comment-user-thumbnail
2023년 8월 3일

훌륭한 글 감사드립니다.

답글 달기