✏️ 작성자: 손연주
📌 작성자의 한마디: "remote에 올라가면 안될 파일이 올라갔어도 정신만 차리면 돌릴 수 있다!"
협업 중에 종종 겪어봤을 무서운 상황일 것 같은데요,,
필자는 Swagger 적용 아티클을 준비하다가 Swagger 설정 파일에 HOST_URI를 박아서 커밋 푸쉬해버리는 끔찍한 실수를 저질러 버렸습니다...😭
물론 그 덕분에 git rebase를 제대로 사용해보는 기회가 생겼고 여러분에게도 공유하고 싶어서 글을 쓰게 되었습니다.
함께 해결하러 가볼까요? :)
저는 하나의 커밋이 아닌 여러 커밋의 코드를 수정해야하는 상황이었습니다.
위의 커밋들의 코드를 수정하기 위해서는 git rebase -i [commit Id]
커맨드를 실행해야합니다.
이때, commitId
에는 수정하고 싶은 가장 첫 커밋의 이전 commitId가 오게 됩니다.
저는 가장 하단의 빨간 화살표가 가리키는 commitId를 적어줘야겠죠?
편집창에 git rebase -i [commitId]
에서의 commitId 이후의 커밋부터 가장 최근 커밋까지 뜨게 됩니다.
모든 커밋이 pick
으로 되어있을 것이고, pick은 use commit, 즉 해당 커밋을 그대로 사용하겠다는 것입니다.
여기서 수정하고 싶은 커밋을 edit
으로 수정 후 저장하면 됩니다. edit은 use commit, but stop for amending, 즉 커밋 수정을 위해 멈추겠다는 것입니다.
(수정 방법: i or a 입력 후 수정, 저장 방법: ESC키 입력 후 :wq 입력)
add + git commit --amend
: 해당 커밋에 코드 수정사항이 있을 때git --continue
: 해당 커밋의 코드에 만족하여 코드 수정사항이 없을 때충돌 사항이 없다면 위의 2개의 명령어로 rebase를 진행할 수 있을 것입니다.
3번의 과정을 반복하다 보면 아무 문제 없이 rebase가 끝날 수도 있지만,
저처럼 conflict를 맞게 된다 해도 당황하실 필요 없습니다!
git status
명령어를 통해 both modified 파일, 즉 충돌 파일을 확인 후 IDE에서 충돌을 해결합니다.
그리고 충돌 해결도 수정 사항이므로 add + git commit --amend
를 해주시면 됩니다.
이후의 과정은 3번을 다시 반복해주시면 됩니다.
3️⃣,4️⃣ 를 반복하다보면 가장 최근의 커밋으로 돌아오게 되며, commitId
가 뜨던 자리에 다시 branch명
이 뜨게 됩니다.
축하드립니다🎉 여기까지 오셨다면 성공적으로 rebase를 마친 것입니다!!!👏👏👏
올리면 안될 파일을 커밋 푸시한 무서운 상황에 처했을 때, 본 글이 여러분께 도움이 될 수 있기를 바랍니다 :)