728x90
728x90

git push 취소하는 방법

들어가며

  • 깃(Git)에서 @push@를 한 후, 취소하는 방법을 정리해본다.

 

방법

최근에 푸시한 커밋 취소하기

  • 마지막 커밋을 삭제하는 명령이다.
  • 하지만 작업 디렉터리의 변경 사항은 그대로 유지된다.
$ git reset --soft HEAD^

 

  • 만약, 작업 디렉터리의 변경 사항을 초기화하려면 아래의 명령을 실행한다.
$ git reset --hard HEAD^

 

@--hard@ 옵션을 이용하여 리셋할 경우, 작업 디렉터리의 변경 사항이 초기화된다. (변경된 내용이 모두 사라진다.)

 

  • 원격 저장소에 이 변경 사항을 강제로 반영하고자 할 경우, 아래 명령을 실행한다.
$ git push --force

 

푸시한 커밋 중, 특정 커밋만 취소하기

$ git revert abc123
  • 원격 저장소에 여러 커밋을 푸시했는데 그중 하나만 취소하고 싶다면 @revert@ 명령어를 사용할 수 있다.
  • 이때 삭제하고자 하는 커밋의 해시(@abc123@)를 이용한다.
  • 이 명령은 해당 커밋을 되돌리는 새로운 커밋을 추가하며, 작업 이력은 유지된다.
  • 위의 명령을 실행하고, 변경 사항을 다시 푸시한다.
$ git push

 

전체 브랜치를 이전 상태로 되돌리기

  • 브랜치를 특정 커밋으로 되돌리고 싶을 경우, 다음과 같이 강제로 브랜치 상태를 지정할 수 있다.
$ git reset --hard <커밋 해시>
$ git push --force

 

(참고) 해시 확인하기

$ git reflog
0eed668 (HEAD -> master, origin/master, origin/HEAD) HEAD@{0}: pull --tags origin master: Merge made by the 'ort' strategy.
34b1042 HEAD@{1}: commit: README.md 파일의 폴더 구조대로 파일/폴더 생성
c5ef412 HEAD@{2}: reset: moving to HEAD^
615a72d HEAD@{3}: reset: moving to 615a72d
eb2ab3e HEAD@{4}: reset: moving to HEAD^
c5ef412 HEAD@{5}: reset: moving to HEAD^
615a72d HEAD@{6}: commit: [Chore] Make basic files and folders based on README.md
c5ef412 HEAD@{7}: clone: from https://github.com/apstinc/rinfos-front.git

 

참고 사이트

 

Git - git-reset Documentation

In the first three forms, copy entries from to the index. In the last form, set the current branch head (HEAD) to , optionally modifying index and working tree to match. The / defaults to HEAD in all forms. git reset [-q] [ ] [--] …​ git reset [-q] [--

git-scm.com

 

Git - git-reflog Documentation

git-reflog - Manage reflog information

git-scm.com

 

728x90
728x90