728x90
Git Undoing
git에서 작업 되돌리기는 작업 상태에 따라 크게 세 가지로 분류된다.
- Working Derectory 작업 단계
- Working Derectory에서 수정한 파일 내용을 이전 커밋 상태로 되돌린다.
- Staging Area 작업 단계
- Staging Area에 반영된 파일을 Working Derectory로 되돌린다.
- Repository 작업단계
- 커밋을 완료한 파일을 Staging Area로 되돌린다.
1. Working Derectory 작업 되돌리기
restore
- Working Derectory에서 수정한 파일을 수정 전(직전 커밋)으로 되돌린다.
- 단, 이미 버전 관리가 되고있는 파일만 되돌릴 수 있다.
- git restore 명령을 통해 되돌리면, 해당 내용을 복원할 수 없다.
$ git restore {파일 이름}
# 이전 버전의 다음 명령어와 동일
$ git checkout -- {파일 이름}
2. Staging Area 작업 되돌리기
- Staging Area에 반영된 파일을 Working Derectory로 되돌린다. (Unstage)
- root-commit 여부에 따라 두 가지 명령어로 나뉜다.
# root-commit이 없는 경우 사용
# git 저장소가 만들어지고 한 번도 커밋을 하지 않은 경우
$ git rm --cached {파일 이름}
# root-commit이 있는 경우 사용
# git 저장소에 한 개 이상의 커밋이 있는 경우
$ git restore --staged {파일 이름}
# or 이전 버전
$ git reset HEAD {파일 이름}
3. Repository 작업 되돌리기
amend
상황 별로 두 가지 기능으로 나뉜다.
- Staging Area에 새로 올라온 내용이 없다면, 직전 커밋의 메시지만 수정
- Staging Area에 새로 올라온 내용이 있다면, 직전 커밋을 덮어쓰기
2024.02.19 - [Git] - [Git] 커밋 수정, 이전 커밋에 덧붙이기 amend
[Git] 커밋 수정, 이전 커밋에 덧붙이기 amend
Intro 프로젝트를 수행하며 git commit을 하다보면, 몇 개의 파일을 빠트리는 경우가 있다. 이 때 같은 커밋 메시지를 여러 번 사용하면, 커밋 하나하나의 크기가 작아지고 후에 커밋을 추적하기 어
imhihi.tistory.com
reset
- 특정 커밋(버전) 상태로 되돌린다
- 특정 커밋으로 되돌아갔을 때 해당 커밋 이후로 쌓았던 커밋은 옵션을 통해 제어한다.
--soft: 되돌아간 커밋 이후의 파일들은 모두 stage 영역으로 돌려놓는다.
--mixed: default, 되돌아간 커밋 이후의 파일들은 Working Derectory로 돌려놓는다.
--hard: 사이에 있는 변경 내역은 모두 사라진다.
- HEAD와 캐럿(^)을 사용해 커밋 ID를 보지 않고 reset 명령어를 실행할 수 있다.
- HEAD^: 캐럿 하나를 사용하면 한 단계 이전을 의미한다.
# mixed
$ git reset {커밋ID}
$ git reset --soft {커밋ID}
$ git reset --mixed {커밋ID}
$ git reset --hard {커밋ID}
# 두 단계 이전으로 이동
$ git reset HEAD^^
revert
- 커밋 ID에 해당하는 변경 사항을 되돌리고, 되돌린 기록을 커밋으로 남긴다.
커밋 기록이 협업 브랜치로 올라간 상태이고, 해당 커밋을 되돌리려면 reset 대신 revert를 사용해야 한다.
$ git revert {커밋ID}
reset과 revert
- reset은 커밋 내역을 삭제하고, revert는 새로운 커밋을 생성한다.
- revert는 Github을 이용한 협업에서 커밋 내역의 차이로 인한 충돌을 방지한다.
- "git reset 5sd2f421"는 5sd2f421라는 커밋으로 되돌린다는 뜻
- "git revert 5sd2f421"는 5sd2f421라는 커밋 한 개를 취소한다는 뜻
5sd2f421라는 커밋이 취소되었다는 내용의 새로운 커밋을 생성한다.
728x90
'Learning > Git' 카테고리의 다른 글
[Github] git-page에 secret key 적용하기 (Actions) (1) | 2024.03.04 |
---|---|
[Git] 깃 협업 명령어 (0) | 2024.02.26 |
[Git] 깃 기본 명령어 (0) | 2024.02.26 |
[Git] 초기 설정 (0) | 2024.02.26 |