[github] 잘못 push한 commit이력 지우기

KangManJoo·2022년 11월 18일
0
post-thumbnail

github로 협업을 하던 도중 push를 실수하는 경우가 종종 있다.
merge 후 바로 commit을 한 사실을 까먹고 push를 한다던가 등
주로 commit을 남발하는 경우 발생한다.
이때, 이미 push한 commit을 되돌리고 싶은 경우 다음과 같은 절차를 밟으면 된다.

(commit을 남발한 뒤 push를 시도해 더러워진 commit내역)

1.로컬 저장소의 commit 내역 확인

되돌아가고 싶은 commit의 ID를 확인한다.
나의 경우, merge후 commit을 남발하여 생긴 모든 commit을 되돌리고 싶기에
6a32ffb라는 ID를 가진 commit으로 reset을 하였다.

이때, --soft 옵션을 줄 경우 내 로컬 저장소의 변경 내역은 그대로 둔채,
commit 내역만을 되돌리게 된다. --hard 옵션을 줄 경우 나의 로컬 저장소 정보 또한
해당 commit의 상태로 돌아가게 되므로 주의하자.

이후 다시 git log로 확인하자, 제대로 commit 내역이 되돌아간 상태이다.

다시 commit 후, git push -f [원격 브랜치 이름][로컬 브랜치 이름] 명령어로
강제 push를 시도한다. 이때, -f 옵션은 기존 push 내역을 덮어쓰게 해주어, 이미 push된 더러웠던 commit 내역을 지워 준다.

하지만 remote: error: GH006: Protected branch update failed for refs/heads/main.
remote: error: Cannot force-push to this protected branch
라는 에러 메시지와 함께 push가 실패했다. 어째서인가 싶어 메시지를 읽어보니,
원격 저장소의 branch가 현재 protected 상태이기 때문이었다.


해당 문제를 해결하기 위해 원격 repo에 있는 나의 branch 설정으로 들어갔다.

나의 branch가 protection rule에 등록되어있었다.
delete해주어, 해당 branch를 unprotection 상태로 만들어준다.

이후 다시 push -f 옵션을 주자 정상적으로 push가 되는 모습이다.
이제 깨끗해진 push 이력으로 안심하고 pr을 날리도록 하자.😊

profile
라면의 건더기같은 존재가 되자

1개의 댓글

comment-user-thumbnail
2022년 11월 18일

공유 브랜치에서는 -f 옵션 주의해서 사용하기

답글 달기