[Git] Git undoing

한결·2023년 4월 14일
0

Github

목록 보기
9/14

Git undoing

  • Git 작업 되돌리기 (undoing)
  • Git에서 되돌리기는 작업 상태에 따라 크게 세가지로 분류
    • working directory
    • staging area
    • repository

working directory 작업단계

staging area 작업단계

repository 작업단계

working directory 작업단계 되돌리기

git restore

  • working directory 에서 수정한 파일을 수정 전(직전 커밋)으로 되돌리기

  • 이미 버전 관리가 되고 있는 파일만 되돌리기 가능

  • git restore를 통해 되돌리면, 해당 내용을 복원할 수 없으니 주의!!

  • git restore {파일 이름}

  • [참고] git 2.23.0 버전 이전에는 git checkout -- {파일 이름}

git status 로 상태 확인

  • untracked
  • tracked
  • up-to-date

staging area 작업단계 되돌리기

  • staging area에 반영된 파일을 working directory로 되돌리기 (==unstage)
  • root-commit 여부에 따라 명령어가 달라짐
    • root-commit 있는 경우 : git rm --cached
    • root-commit 없는 경우 : git restore --staged

git rm --cached

  • to unstage and remove paths only from the staging area
  • root-commit이 없는 경우 사용(Git 저장소가 만들어지고 한 번도 커밋을 안 한 경우)
  • git rm --cached {파일 이름}

git restore --staged

  • the contents are restored from HEAD
  • root-commit이 있는 경우 사용(Git 저장소에 한 개 이상의 커밋이 있는 경우)
  • git restore --staged {파일 이름}
  • [참고] git 2.23.0버전 이전에는 git reset HEAD {파일 이름}

Repository 작업 단계 되돌리기

Local Repo를 말하는 거임

  • remote Repo는 Git hub의 원격 Repo

git commit --amend

  • 커밋을 완료한 파일을 Staging Area로 되돌리기

  • 상황 별로 두 가지 기능으로 나뉨

    • Staging Area에 새로 올라온 내용이 없다면, 직전 커밋의 메시지만 수정
    • Staging Area에 새로 올라온 내용이 있다면, 직전 커밋을 덮어쓰기
  • amend(수정하다) 즉, 이전 커밋을 수정해서 새 커밋으로 남김
    커밋 내용을 수정하거나 수정 사항을 새로 커밋에 추가하고 싶을 때 사용
    수정 사항을 반영하기 위해 새로운 커밋을 생성하지 않아도 됨

Staging Area에 새로 올라온 내용이 없는 상황

  • 직전 커밋의 메세지만 수정

Staging Area에 새로 올라온 내용이 있는 상황

  • 직전 커밋을 덮어쓰기

[참고] Vim 간단 사용법

  • 입력 모드(i) : 문서 편집 가능
  • 명령 모드(esc)
    • 저장 및 종료(:wq)
    • 강제 종료(:q!)

0개의 댓글