728x90
목차
- 작업 상태에 따른 분류
- Working Directory 작업 단계 되돌리기
- Staging Area 작업 단계 되돌리기
- 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 |