Dev_Henry

[Git] 깃 과거 커밋 수정하기 본문

기타 개발

[Git] 깃 과거 커밋 수정하기

데브헨리 2023. 7. 20. 09:21
728x90

 

팀 프로젝트 진행중에 팀원들이 협업과 깃에 익숙하지 않아서 문제가 발생했다.

 

이미 메인 브랜치에 각자 작업내용들을 모두 합치기도 했고 원격 깃허브에도 모두 올라간 상황인데 한 팀원의 브랜치에서 깃허브에 올라가면 안되는 파일이 꽤 예전 커밋에서 부터 포함되어 올라와있었다.

 

gitignore에도 등록해둔 파일인데 어쩌다 올라갔는지는 모르겠지만 아무튼 과거의 커밋을 수정해서 해당 파일을 제외해야했다.

 

 

git rebase -i [커밋해시]
 

과거의 커밋을 수정할때는 rebase -i 를 이용한다. 수정하고자 하는 커밋보다 이전 커밋의 해쉬번호를 선택하여 입력하면 아래와 같은 화면이 나온다.

 

 

각각 커밋들이

[커맨드] [해시번호] [커밋메시지]

형태로 나열되어있고 친절하게 커맨드에 대한 설명도 적혀있다.

기본적으로 해당 커밋을 그대로 사용한다는 뜻의 pick으로 되어있으며 수정하길 원하는 커밋 앞에 커맨드를 수정하면 된다.

 

빠져야하는 내용이 독립된 커밋으로 올라와있었다면 단순하게 해당커밋앞에 d 또는 drop 을 적으면 커밋이 삭제되겠지만 내 상황에서는 수정이 필요하니 수정을 뜻하는 e을 적는다. :wq 를 입력해서 빠져나오면 해당 커밋 시점으로 이동된다.

 

이동되는 시점은 수정하려는 커밋이 이미 추가되어있는 상태이기때문에

git reset HEAD~
 

명령어를 입력하여 스테이징 되기 이전으로 이동한 뒤, 문제가 되는 파일을 제외한 나머지만 add하고 커밋하면 된다.

 

수정이 끝나면

git rebase --continue
 

명령어로 진행하면되고

 

혹시 작업중 충돌이 많이 생겨서 일단 취소하고 미뤄두겠다면

 

git rebase --abort
 

명령어를 입력하면 작업을 취소한다.

 

 

 

728x90
반응형