git add, commit, push 취소하기

muz·2021년 4월 5일
0

Git과 GitHub

목록 보기
2/4
post-thumbnail

git을 사용하다보면 관련없는 파일을 git add로 파일을 추가했다던가, 모든 파일을 add하지 않은 채 git commit으로 이미 커밋해버렸다던가, 변경된 내용을 commit하지 않은 채 git push를 해버리는 등의 여러 상황을 겪어보았을 것이다.

오늘은 잘못한 add, commit, push를 취소하는 방법에 대해 알아보자.

git add 취소하기(파일을 Unstage 상태로 되돌리기)

  • git add 파일명.확장자
    : 특정 파일을 Staging Area에 넣은 경우
  • git add *
    : 모든 파일을 Staging Area에 넣은 경우

이러한 경우 git reset HEAD [file] 명령어로 git add를 취소할 수 있다.

  • git reset HEAD [file]
    : 특정 파일의 add를 취소함
  • git reset HEAD
    : add한 파일 전체를 취소함

예시 화면을 살펴보자.
예시화면1


git commit 취소하기

아직 작업을 다 마치지 못한 상태에서 commit을 해버렸다던가, 몇몇의 파일을 포함하지 않은 채 commit을 해버린 경우가 있을 것이다. 그럴 때에는 다음과 같이 하면 된다.

commit 취소하기

  • git log
    : 우선 log 명령어로 commit 목록 확인하기
  • git reset --soft HEAD^
    : commit취소 후 해당 작업 파일들을 staged 상태로 보존
    (soft는 index 보존(add한 상태, staged 상태), 워킹 디렉터리의 파일 보존. 즉 모두 보존))
  • git reset --mixed HEAD^ or git reset HEAD^
    : commit 취소 후 해당 작업 파일들을 unstaged 상태로 보존
    (mixed는 index 취소(add하기 전 상태, unstaged 상태), 워킹 디렉터리의 파일 보존 (기본 옵션))
  • git reset HEAD~3
    : 마지막 3개의 commit을 취소함
  • git reset --hard HEAD^
    : commit 취소 후 해당 작업 파일들은 unstage상태로 삭제
    (hard는 index 취소(add하기 전 상태, unstaged 상태), 워킹 디렉터리의 파일 삭제. 즉 모두 취소)

예시 화면을 살펴보자.
예시화면2

commit message 내용 변경

commit message의 내용을 잘못 적은 경우가 있을 수 있다. 그럴 땐 git commit --amend를 하면 된다.


git push 취소하기

git push를 취소할 땐 특정 commit으로 되돌아 갈 수 있는데, 이 때 되돌아간 commit 이후의 모든 commit정보가 사라지니 잘 유의해야 한다!

  1. git reset HEAD^
    : 최신 commit을 취소한 후, working directory를 되돌리기
  2. git reflog or git log -g
    : Reflog(branch와 HEAD가 가리킨 커밋) 목록 확인
  3. git reset HEAD@{number} or git reset [commit id]`
    : 원하는 시점으로 directory를 되돌리기
  4. git commit -m "커밋메시지 작성"
    : 다시 commit하기
  5. git push origin [branch name] -f or git push origin +[bn]
    : 원격 저장소에 강제로 push하기

5번의 -f+[branch name]은 경고를 무시하고 강제로 push하는 방법이라고 한다.


🙄 git clean 이용하기

git clean은 추적 중이지 않은 파일(untracked file)만 지우는 기본 동작이다.

  • git clean -f : dir을 제외한 파일들만 삭제
  • git clean -f -d : dir까지 삭제
  • git clean -f -d -x : 무시된 파일까지 삭제
  • git clean -n : 지워질 파일을 가상으로 알려줌

Reference

profile
Life is what i make up it 💨

0개의 댓글