잘못된 Git 변경사항 실행취소

다른 날 나는 독자 중 한 명으로부터 잘못 만들어진 커밋을 되돌리는 방법을 묻는 멋진 이메일을 받았습니다.
나는 내 기사를 뒤돌아보고 이것을 적어 본 적이 없다는 것을 깨달았습니다. 그래서 여기 있습니다.

몇 가지 수준의 변경 사항을 살펴보겠습니다. 각각 약간씩 다른 접근 방식이 필요했습니다.
  • 아직 변경 사항을 커밋하지 않았습니다
  • .
  • 푸시되지 않은 커밋 실행 취소
  • 푸시된 커밋 실행 취소

  • Note: This article describes the commands. Most GUI's have a visual integration for these commands.


    Git에서 커밋하지 않은 변경 사항 실행 취소



    약간의 변경을 가했지만 옳지 않은 일을 했고 되돌려야 한다는 사실을 금방 깨닫게 되는 일이 발생할 수 있습니다.

    Note: you can use git status to see all open changes



    되돌리려는 파일의 파일 이름을 선택하고 다음 명령을 실행합니다.

    git checkout filename.extension
    


    이 명령은 파일을 이전 상태로 되돌립니다.

    아래에서 astro.config.mjs 파일을 변경하고 되돌린 예를 볼 수 있습니다.



    푸시되지 않은 커밋 취소



    이미 변경 사항을 커밋한 지점에 도달했을 수 있습니다.
    운 좋게도 당신은 아직 그들을 밀지 않았습니다.

    여기에는 여러 가지 이유가 있을 수 있습니다. 아마도 모든 파일을 포함하지 않았거나 기회를 놓친 것을 눈치채셨을 것입니다.

    다음 명령을 실행하여 마지막 커밋을 되돌립니다.

    git reset --soft HEAD~
    


    Note: You can specify multiple commits by placing a number at the end.



    예를 들어 마지막 두 커밋을 취소하려면 다음 명령을 실행할 수 있습니다.

    git reset --soft HEAD~2
    


    아래에서 두 가지 변경 사항을 커밋한 다음 커밋을 재설정하여 다시 변경할 수 있는 예를 볼 수 있습니다.



    이미 푸시된 커밋 취소



    이것은 가장 일반적인 시나리오이자 가장 지저분한 시나리오입니다.
    Git에 코드를 커밋하고 푸시했습니다.

    아래에 설명된 옵션은 이전 커밋을 제거하지 않습니다. 단순히 원래 상태로 되돌립니다.

    1단계는 깨끗한 작업 디렉토리에 있는지 확인하는 것입니다. 열린 새 변경 사항이 없어야 합니다.

    그런 다음 실행 취소하려는 특정 커밋에 대한 해시를 찾아야 합니다. 예를 들어 GitHub와 같은 온라인 Repo에서 찾을 수 있습니다.



    이 해시를 가지고 터미널로 돌아갑니다.
    이제 다음 명령을 실행하여 이 커밋을 되돌릴 수 있습니다.

    git revert f193a76 --no-edit
    


    Note: The --no-edit is optional. It won't prompt you to edit the commit message that way



    일단 실행되면 로컬에서 커밋과 반대되는 작업을 수행한다는 것을 알 수 있습니다.

    이 명령은 파일을 이전의 상태로 되돌립니다.

    이제 남은 것은 되돌린 코드를 푸시하는 것입니다.

    git push
    


    변경 사항을 보면 이전 커밋이 여전히 있지만 새 되돌리기 커밋이 변경 사항을 대체하는 것을 볼 수 있습니다.



    읽어주셔서 감사합니다. 연결합시다!



    제 블로그를 읽어주셔서 감사합니다. 내 이메일 뉴스레터를 구독하고 Facebook에 연결하거나

    좋은 웹페이지 즐겨찾기