군만두의 IT 개발 일지

[Git] 특정 커밋으로 되돌리기 - git reset --hard 및 강제 푸시 본문

문서/Git

[Git] 특정 커밋으로 되돌리기 - git reset --hard 및 강제 푸시

mandus 2023. 10. 24. 10:10

목차

    📌 요약

    프리코스 1주차 미션 진행 중에 branch가 꼬이는 문제가 발생했다. git pull만으로는 해결이 안 되는 상황이었다. 검색 후 이전 버전으로 영구 이동하기로 했다. 삭제하고 싶은 커밋 메시지가 있는 바로 전 버전으로 이동했다.

     


    📌 내용

    아래 순서대로 진행하면 원하는 커밋 시점으로 되돌릴 수 있다.

    프리코스 1주차 이전 버전 이동

     

    1. 커밋 이력 확인

    먼저 아래 명령어로 커밋, 체크아웃, 머지 등의 전체 이력을 확인한다. 돌아가고 싶은 커밋의 해시 코드를 여기서 찾는다.

    # 커밋, 체크아웃, 머지 등의 이력 확인
    git reflog

     

    2. 원하는 버전으로 되돌리기

    두 가지 방법 중 하나를 선택하여 실행한다.

    # 최근에서 n만큼 돌아가기
    git reset --hard head~{n}
     
    # 해시 코드에 해당하는 commit으로 돌아가기
    git reset --hard {해시 코드}
    ⚠️ --hard 옵션은 해당 커밋 이후의 변경 사항을 완전히 삭제한다. 복구가 불가능하므로 신중하게 사용해야 한다.

     

    3. 커밋

    되돌린 상태에서 필요한 작업을 마친 뒤 커밋한다.

    git commit -m "commit messages"

     

    4. 원격 저장소에 강제 푸시

    로컬의 변경 이력을 원격 저장소에 강제로 반영한다.

    # 원격 저장소에 강제 푸시
    git push origin [branch name] -f
    
    # 또는
    git push origin +[branch name]
    ⚠️ 강제 푸시(-f)는 원격 저장소의 이력을 덮어쓴다. 협업 중인 브랜치에서는 팀원과 반드시 공유 후 사용해야 한다.

    📌 참고사이트

    1) developnote, "[Git] 특정 버전으로 되돌리기", https://developnote.tistory.com/149

     

    [Git] 특정 버전으로 되돌리기

    Git을 사용해 협업하다 보면 이전 commit으로 되돌아갔다가 다시 작업을 수행하거나 영영 프로젝트를 되돌려야 할 때가 있다. 그래서 일시적으로 특정 버전으로 되돌아가는 방법과 영구적으로 특

    developnote.tistory.com

    2) Heee's Development Blog, "[Git] git add 취소하기, git commit 취소하기, git push 취소하기", https://gmlwjd9405.github.io/2018/05/25/git-add-cancle.html

     

    [Git] git add 취소하기, git commit 취소하기, git push 취소하기 - Heee's Development Blog

    Step by step goes a long way.

    gmlwjd9405.github.io

     

    Comments