반응형
01. 전제조건) commit 했던 내역 확인 (git log)
- 노란문자 : commit의 고유 id
- 고유id를 이용해 "그 고유id로 돌려주세요~" 라는 명령 입력 가능
- 깃은 과거를 아예 삭제하거나 조작하는 것은 불가능!!
git log --oneline
02. 파일 단위로 복구 - git restore
##git restore 파일명 : a.txt 파일의 최근 커밋 상태로 돌아가기
git restore a.txt
##git restore --source 커밋아이디 파일명 : a.txt 파일의 특정 커밋 상태로 돌아가기
git restore --source fs123gf a.txt
##git restore --staged 파일명 : a.txt 파일이 staging area에 있엇던 시점으로 돌아가기 - 즉, 처음 add한 시점
## 다시말해 staging 취소하기라는 뜻
##git status 입력하면 아래의 명령어도 함께 나옴
git resotre --staged a.txt
03. commit 단위로 복구(다시 미래로 이동 가능) - git revert
## 이 시점으로 돌아가 이 시점을 새롭게 다시 저장하는 것!
git revert 커밋아이디
## 터미널에서는 vim 모드로 변경됨 - i키 눌러 커밋메세지 수정 후 esc 눌러 나오기, :wq 입력 시 커밋 저장
## 동시에 여러개 입력해 복구 가능
git revert 커밋아이디1 커밋아이디2
## 가장 최근 했던 commit 1개만 revert
git revert HEAD
b 파일 문제많아 b 파일을 만든 d874b2b 커밋 취소 할 것 ( d874b2b 커밋 하나 취소한 commit 생성하기)
04. 전부 시간을 되돌리기(다시 미래로 복구 불가능) - git reset
- 아래의 명령 입력 시 커밋이 생성될 떄로 시간을 되돌려줌
- 작업폴더 내 파일도 그 시절로 돌아감
- 단 그 이후의 미래 기억은 모두 사라짐
- 프로젝트가 망하거나, 짧은 거리를 돌아갈 때 사용하기!!
git reset --hard 커밋아이디
옵션 설정
- reset 하면서 파일을 아예 지워버리는 게 아니라 검토하고 다시 commit 하고 싶을 때
- --soft, --mixed 이용하기
- 기본옵션 : --mixed
##이 시점으로 돌아가!! - 앞으로 6글자 이용
##돌아갈 과거 이후 행적은 복원할 여지 없이 완전히 삭제함
##a, b파일은 남아있고 c 파일이 삭제
git reset --hard d874b2b
##a, c파일은 남아있고 b 파일은 staging area에 남음
##commit 가능
git reset --soft d874b2b
##a, c파일은 남아있고 b 파일은 staging 되지 않은 상태
##이제 git add 하고 commit 가능
git reset --mixed d874b2b
git reset d874b2b
소스트리에서 확인
반응형
'git' 카테고리의 다른 글
[git] 10. 원격저장소(GITHUB) 기초 사용법 (git push, git remote, git clone, .gitignore) (0) | 2024.07.07 |
---|---|
[git] 9. GIT 명령어 없이 이클립스(IDE)만 이용해 소스코드를 GITHUB에 업로드하는 법 (0) | 2024.07.07 |
[git] 7. GIT 브랜치 병합 (git rebase, git merge --squash) (0) | 2024.07.07 |
[git] 6. GIT 브랜치 (git branch, git switch, git log, git merge, git merge -d) (0) | 2024.07.07 |
[git] 5. GIT 버전 파일들 비교 (git diff) (0) | 2024.07.07 |