GitHub에 실수로 push해 버린 것을 취소하는 방법 (reset)

4648 단어 GitHub

reset(대상 커밋을 커밋 로그에서 삭제)을 사용하는 경우


  • 팀 개발의 경우에는 없었던 것으로 하기 위해 최대한 사용하지 않는다
  • 사용하는 경우는 자신 혼자 만져있는 상태 등
  • pass 등을 올렸을 때

  • 원격 저장소에서 완전히 지우는 단계



    1. 로그를 확인하고 로그 ID 얻기



    2. 적절한 reset 방법(3종 있음)을 실행



    3. push



    3종의 취소 방법


    $ git reset --soft コミットID      commitを取り消し
    $ git reset --hard コミットID      commitとaddとソースを取り消し
    $ git reset --mixed コミットID     commitとaddを取り消し
    
  • git reset --mixed 실행시
  • 커밋 ID를 지정하고 원격 리포지토리의 커밋 add를 취소하고 push 이전의 모든 상태로 되돌립니다 (로컬 리포지토리의 소스 코드가 남아 있음).

  • VS 코드에서 reset 원하는 brunch 로그 확인
  • 터미널에서 git log --oneline 실행 (각 log의 세부 사항을 확인하려면 $ git log 실행)
  • $ git log --oneline
    
  • 실행 결과 (아래에서 위로 갈수록 새로운 로그 정보)
  • x86_64 itonoMacBook-Air$ "[~/training_project/training_project  test *]$ git log --oneline
    574c160 (HEAD -> test, origin/test) test_5です。
    92de579 test_4です。
    16015ec test_3です。
    a684537 test_2です。
    7416e6d test_1です。
    b88bfac test test test
    
    コミットID    コミット内容
          ↓                     ↓
    16015ec      test_3です。
    
  • 실제 화면 (log 정보에서 빠질 때는 터미널에서 wq
  • 아래 부분이 최신 log 정보

  • 리턴하려는 임의의 커밋 ID 지정


  • 빨간색 프레임의 16015ec test_3です。까지 되돌리고 싶은 경우
  • 커밋 ID 16015ec 지정 git reset --mixed 16015ec 실행
  • $ git reset --mixed 16015ec
    Unstaged changes after reset:
    M       test.txt
    
  • 실제 화면
  • log 확인
  • $ git log --oneline
    
    x86_64 itonoMacBook-Air$ "[~/training_project/training_project  test *]$ git log --oneline
    16015ec (HEAD -> test, origin/test) test_3です。
    a684537 test_2です。
    7416e6d test_1です。
    b88bfac test test test
    

    실제 화면(제대로 최신 커밋이 16015ec test_3です。까지 돌아온다)


    로컬 브랜치를 반환하면 push


  • git push -f origin ブランチ名 실행
  • "x86_64 itonoMacBook-Air$ "[~/training_project/training_project  test *%]$ git push -f origin test
    Total 0 (delta 0), reused 0 (delta 0), pack-reused 0
    To https://github.com/ITO9875/training_project.git
     + 437284f...16015ec test -> test (forced update)
    

    ※참고 : git reset 나중에 수정한 내용을 평소대로 git push origin ブランチ名 (git push origin ブランチ名
    이미지 a: git push -f origin ブランチ名 런타임에 실제 오류 화면


    GitHub · VS 코드 reset 전후


  • GitHub

  • reset 실행 전

    reset 실행 후

  • VS 코드

  • reset 전


    재설정 후


    reset --mixed 로그 ID를 실행한 결과



    · GitHub에서 commit 및 add 삭제
    · 로컬 리포지토리에서 소스 코드가 사라지지 않음

    기타 커밋 삭제 방법



    revert(대상 커밋을 취소하기 위한 커밋을 수행하는 방법)


  • 기록을 남기면서 취소

  • 등이 있다(향후 조사한다)

    좋은 웹페이지 즐겨찾기