본문 바로가기
Git

원격 저장소에 커밋 이력 복구하기 | --force

by 신림쥐 2023. 12. 18.
728x90

 

     


    개요

    Git에서 --force 옵션을 사용하여 원격 저장소에 커밋 이력을 복구하는 방법에 대해 설명합니다. 이 방법은 주로 로컬 저장소에서 이력을 수정하거나 되돌리고자 할 때 유용하지만, 주의해서 사용해야 하는 강력한 명령어입니다. 이 포스팅에서는 원격 저장소의 커밋 이력을 복구하는 과정과 --force의 사용법을 알아봅니다.

     

     

    --force

    Git에서 --force 옵션은 강제로 원격 저장소의 상태를 로컬 상태로 덮어쓰는 명령어입니다. 주로 로컬에서 커밋 이력을 변경한 후 이를 원격 저장소에 강제로 푸시할 때 사용합니다.

    --force 옵션은 해당 레파시토리에 브랜치 수정 권한이 필요합니다.

     

    --force 사용 시 주의사항

     

    이력 손실

    --force 명령어는 원격 저장소에 존재하는 커밋 이력을 덮어쓰므로, 이전 커밋들이 사라지게 됩니다. 특히 여러 명이 협업 중이라면, 다른 개발자의 작업에 영향을 줄 수 있으므로 사용에 주의가 필요합니다.

     

    협업 주의

    협업 프로젝트에서는 --force 사용 전 팀원들과 충분히 협의하고, 다른 팀원이 푸시한 변경 사항을 덮어쓰지 않도록 해야 합니다.

     

     

    "한 번의 실수가 큰 혼란을 불러오지 않도록, 항상 신중하게!"
    • "이 작업은 저장소를 통째로 날려버리거나, 커밋한 코드가 사라지거나, 협업자들의 버전 충돌을 일으킬 수 있습니다."
    • "개인 작업용, 혹은 정말 필요할 때만 실행하세요!"
    • "커밋과 푸시 전에, 저장소와 변경 내용을 꼭 확인하는 습관을 들여요!"

     

     

    revert, force 를 사용하여 커밋 이력 복구하기

    원격 저장소에서 커밋 이력을 복구하려면, 먼저 로컬 저장소에서 변경하고 싶은 커밋 이력으로 되돌아가야 합니다. 되돌리고자 하는 커밋을 git reset 명령어를 사용하여 복구한 후, --force 옵션을 사용하여 원격 저장소에 푸시합니다.

     

    1. 스태시 저장하기

    먼저, 현재 작업 중인 코드가 있다면 스태시에 저장합니다.

    git stash
    또는
    git stash save "작업 중인 기능 이름 또는 설명"

     

    2. 커밋 되돌리기

    복구하려는 커밋 해시를 찾고 해당 커밋으로 되돌립니다.

    git reset --hard abcdef1234

     

     

    3. --force 옵션을 사용하여 원격 저장소에 푸시하기

    로컬의 커밋 이력을 되돌린 후, 원격 저장소에 변경 사항을 강제로 푸시합니다.

    git push --force upstream master
    // git push --force [덮어씌울 원격저장소] [덮어씌울 원격저장소 브랜치]


    여기서 <브랜치명>은 푸시하고자 하는 브랜치의 이름입니다. 예를 들어, master 브랜치에 푸시하려면 다음과 같이 입력합니다:

    git push origin master --force

     

     

    4. 스태시 복원 및 삭제

    저장한 스태시를 다시 작업 디렉토리로 복원합니다.

    git stash apply

     

    특정 스태시를 복원하려면 목록에서 원하는 스태시를 선택하여 복원할 수 있습니다:

    git stash apply stash@{번호}

     

    스태시 작업이 완료되면, 불필요한 스태시는 삭제합니다.

     

    git stash drop stash@{번호}
    또는
    git stash clear

     

    728x90