[Git] 이미 remote에 올라간 중요 파일 rebase로 해결하기

Server The SOPT·2022년 7월 20일
11
post-thumbnail

✏️ 작성자: 손연주
📌 작성자의 한마디: "remote에 올라가면 안될 파일이 올라갔어도 정신만 차리면 돌릴 수 있다!"

😱 이게 remote에 올라갔다고?!

협업 중에 종종 겪어봤을 무서운 상황일 것 같은데요,,
필자는 Swagger 적용 아티클을 준비하다가 Swagger 설정 파일에 HOST_URI를 박아서 커밋 푸쉬해버리는 끔찍한 실수를 저질러 버렸습니다...😭
물론 그 덕분에 git rebase를 제대로 사용해보는 기회가 생겼고 여러분에게도 공유하고 싶어서 글을 쓰게 되었습니다.
함께 해결하러 가볼까요? :)

1️⃣ 먼저 돌아가야 할 커밋 위치와 수정해야할 커밋 id를 체크합니다.

저는 하나의 커밋이 아닌 여러 커밋의 코드를 수정해야하는 상황이었습니다.

  • 코드 수정해야 할 커밋들 : 노란 박스들

위의 커밋들의 코드를 수정하기 위해서는 git rebase -i [commit Id] 커맨드를 실행해야합니다.
이때, commitId 에는 수정하고 싶은 가장 첫 커밋의 이전 commitId가 오게 됩니다.
저는 가장 하단의 빨간 화살표가 가리키는 commitId를 적어줘야겠죠?

2️⃣ git rebase -i [commitId] 를 입력하면 아래의 편집창이 나오고, 수정하고 싶은 commit을 pick -> edit 으로 수정 후 저장합니다.

편집창에 git rebase -i [commitId] 에서의 commitId 이후의 커밋부터 가장 최근 커밋까지 뜨게 됩니다.
모든 커밋이 pick으로 되어있을 것이고, pick은 use commit, 즉 해당 커밋을 그대로 사용하겠다는 것입니다.
여기서 수정하고 싶은 커밋을 edit으로 수정 후 저장하면 됩니다. edit은 use commit, but stop for amending, 즉 커밋 수정을 위해 멈추겠다는 것입니다.
(수정 방법: i or a 입력 후 수정, 저장 방법: ESC키 입력 후 :wq 입력)

3️⃣ 수정할 커밋들 중 첫 커밋 위치로 돌아가게되며, [수정 후 add + git commit --amend] or [git --continue] 둘 중 한가지를 선택하여 rebase를 진행합니다.

  • add + git commit --amend : 해당 커밋에 코드 수정사항이 있을 때
  • git --continue : 해당 커밋의 코드에 만족하여 코드 수정사항이 없을 때

충돌 사항이 없다면 위의 2개의 명령어로 rebase를 진행할 수 있을 것입니다.

4️⃣ 만약 conflict를 맞게 된다면 당황 NO!! 충돌 파일 확인 후 IDE에서 충돌 해결 후, add + git commit --amend

3번의 과정을 반복하다 보면 아무 문제 없이 rebase가 끝날 수도 있지만,
저처럼 conflict를 맞게 된다 해도 당황하실 필요 없습니다!
git status 명령어를 통해 both modified 파일, 즉 충돌 파일을 확인 후 IDE에서 충돌을 해결합니다.
그리고 충돌 해결도 수정 사항이므로 add + git commit --amend 를 해주시면 됩니다.
이후의 과정은 3번을 다시 반복해주시면 됩니다.

🎉 rebase 성공

3️⃣,4️⃣ 를 반복하다보면 가장 최근의 커밋으로 돌아오게 되며, commitId가 뜨던 자리에 다시 branch명이 뜨게 됩니다.
축하드립니다🎉 여기까지 오셨다면 성공적으로 rebase를 마친 것입니다!!!👏👏👏

올리면 안될 파일을 커밋 푸시한 무서운 상황에 처했을 때, 본 글이 여러분께 도움이 될 수 있기를 바랍니다 :)


참고자료

[git] 이전 코드 수정

profile
대학생연합 IT벤처창업 동아리 SOPT 30기 SERVER 파트 기술 블로그입니다.

0개의 댓글