[Git] Undoing(되돌리기)

cheon2308
|2022. 10. 28. 10:30
728x90

목차

  1. 작업 상태에 따른 분류
  2. Working Directory 작업 단계 되돌리기
  3. Staging Area 작업 단계 되돌리기
  4. Repository 작업 단계

 


1. 작업 상태에 따른 분류

 

Git에서 되돌리기는 작업 상태에 따라 크게 세 가지로 분류

  • Working Directory 작업 단계
  • Staging Area 작업 단계
  • Repository 작업 단계

 

  • Working Directory 작업 단계
    • Working Directory에서 수정한 파일 내용을 이전 커밋 상태로 되돌리기
    • git restore
  • Staging Area 작업 단계
    • Staging Area에 반영된 파일을 Working Directory로 되돌리기
    • git rm --cached
    • git restore --staged
  • Repository 작업 단계
    • 커밋을 완료한 파일을 Staging Area로 되돌리기
    • git commit --amend

 


2. Working Directory 작업 단계 되돌리기 

 

git restore

 

  • Working Directory에서 수정한 파일을 수정 전(직전 커밋)으로 되돌리기 -> 현재 변경 사항 add 전에 진행
  • 이미 버전 관리가 되고 있는 파일만 되돌리기 가능
  • git restore를 통해 되돌리면, 해당 내용을 복원할 수 없으니 주의할 것!
  • git restore {파일 이름}
  • 참고 - git 2.23.0 버전 이전에는 git checkout -- {파일 이름}

 

  • git restore a.txt
    • vesion 3로 내려온다.


3. stagine Area 작업 단계 되돌리기

 

개요

 

  • Staging Area에 반영된 파일을 Working Directory로 되돌리기 (== Unstage) -> add 후 진행
  • 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 {파일 이름}


4. Repository 작업 단계 되돌리기

 

git commit --amend

 

  • 커밋을 완료한 파일을 Staging Area로 되돌리기
  • 상황 별로 두 가지 기능으로 나뉨
    • Staging Area에 새로 올라온 내용이 없다면, 직전 커밋의 메시지만 수정
    • Staging Area에 새로 올라온 내용이 있다면, 직전 커밋을 덮어쓰기
  • 이전 커밋을 완전히 고쳐서 새 커밋으로 변경하므로, 이전 커밋은 일어나지 않은 일이 되며 히스토리에도 남지 않음을 주의할 것!

 

첫 번째 상황

 

  • Staging Area에 새로 올라온 내용이 없다면, 직전 커밋의 메시지만 수정
$ git commit --amend

## 들어가서

insert 누른 후 commit 내용 변경

# 변경 완료 후 :wq로 탈출

 

 

※ 참고 Vim 간단 사용법 

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

 

두 번쨰 상황

 

  • Staging Area에 새로 올라온 내용이 있다면, 직전 커밋을 덮어쓰기

 

 

728x90

'Tool > Git' 카테고리의 다른 글

[Git] workflow  (0) 2022.10.28
[Git] branch & merge  (0) 2022.10.28
[Git] reset & revert  (0) 2022.10.28
[Git] 기본 설정 및 조작  (0) 2022.10.28
[Git] 설치 및 기본 설정  (0) 2022.10.28