개발새발 - IT 기술블로그
article thumbnail

 

Github로 버전관리를 하다보면 에러가 존재하는 코드 혹은 다른 파일을 commit 하는 실수가 발생 할 수 있습니다. 깃허브는 지금까지의 모든 commit을 push하기 때문에 잘못된 기록이 남는것을 막기 위해선 특정 commit을 지워줘야 하겠죠. 

 

그럼 특정 commit을 되돌리는 방법에 대해 알아보겠습니다.

 


 

reset

 

주의!

reset 명령어는 커밋한 기록 자체가 남지 않기 때문에 복구할 수 없습니다. 최대한 사용을 지양하며 revert 명령어의 사용을 권장합니다.

 

 

 

커밋 내역 확인하기

git log

 

 

저는 아래 캡처와 같이 총 4개의 커밋을 진행했습니다.

 

 

 

 

최근 하나의 커밋 지우기

git reset HEAD^

 

 

가장 최근 커밋인 fourth commit이 사라진걸 확인 할 수 있습니다.

 

 

 

여러개의 커밋 동시에 지우기

git reset HEAD~개수

 

개수 자리에 원하는 커밋의 숫자를 입력하면 됩니다.

 

 

저는 2를 입력하였더니 third 와 second commit이 사라졌군요.

 

 

 

깃허브 원격 저장소에 반영하기

이제 살아남은 first commit을 github에 업로드 해보겠습니다. 

git push origin "브랜치명"

 

 

정상적으로 first commit만 푸시가 되었네요.

 

만일 프로젝트를 같이 진행하는 팀원과 브랜치(branch)를 공유하는 상황이라면, 누군가 내 커밋을 pull로 당겨갔을 경우 그 커밋은 reset 하였어도 팀원의 로컬저장소에 남게 된다는 것을 알아두세요!

 

 

revert

revert는 커밋을 했던 기록이 남으며 revert로 커밋을 취소했다는 기록까지 남기는 명령어입니다.

 

 

 

새로운 커밋 만들기

 

 

지금은 first commit이 원격저장소에 들어가 있는 상태이니 하나의 커밋을 새로 만들어보겠습니다.

 

git commit -m "커밋 메시지"

 

 

로그를 찍어 확인하기

 

 

로그를 찍어 확인해보았습니다. git log 옵션으로 --oneline 을 붙여주면 한줄씩 간략하게 로그를 확인 할 수 있습니다.

 

git log --oneline

 

 

커밋번호로 revet하기

 

이제 second commit을 revert명령어를 사용해 취소해보겠습니다. --no-edit 옵션은 세부조정을 스킵하는 명령어입니다.

 

git revert --no-edit "커밋번호"

 

 

깃허브에 푸시하기

 

 

revert에 성공하여 코드가 second commit 이전의 상태로 돌아왔습니다. 마찬가지로 원격저장소에 push해 결과를 확인해봐야죠!

 

git push -f origin "브랜치명"

 

 

깃허브에서 revert 기록 확인하기

 

보시다시피 revert 했다는 기록과 second commit을 했던 기록이 남아있네요. 코드의 변경사항도 남아있어 확인하실 수 있습니다. 

 

 

이렇게 이번 포스팅에선 commit을 취소/삭제하는 두가지 방법에 대해 알아봤습니다.

결론은 아무도 모르게 삭제하고 싶다면 reset을, 삭제했다는걸 기록해둬야 한다면 revert를 사용하시는것을 추천합니다:)

 

감사합니다.

 

 

참고

https://0urtrees.tistory.com/44

 

Github 깃허브 최근 커밋 삭제, 추가 명령어 사용법

안녕하세요 민군입니다 ^-^// 최근에 커밋을 실수할때마다 새로 지우고 갱신하는 경우를 많이 경험하고 있는데요. 간만에 명령어를 쓰다보면 어떻게 커밋을 삭제하고 추가했는지 기억이 안나서

0urtrees.tistory.com

 

https://powerofsummary.tistory.com/231

 

[github] git revert를 이용해 커밋되돌리기

git을 관리하다보면 잘못된 코드를 commit해서 고치고 싶을 수 도 있고, 나중에 지나고 보니 버전을 예전버전으로 되돌려서 다시 작업을 시작해야하는 경우도 있다. 이럴 때 필요한 명령어는 git res

powerofsummary.tistory.com