반응형
[문과 코린이의 IT 기록장] Git 심화 - 취소 및 되돌리기 (관리되지 않는 파일들 삭제하기, 커밋하지 않은 변경사항 되돌리기, reset 이후 복구 방법)
2022.04.06 - [문과 코린이의, [Git] 기록] - [문과 코린이의 IT 기록장] Git 심화 (Help와 문서 활용하기, Git의 각종 설정 (Git config))
1. 관리되지 않는 파일들 삭제하기
- Git에서 추적하지 않는 파일들 삭제
$git clean
옵션 | 설명 |
-n | 삭제될 파일들 보여주기 (git clean 명령어를 사용했을 때 삭제될 파일들을 보여줌) |
-i | 인터렉티브 모드(어떤 것을 삭제할지를 고르는 모드) 시작 |
-d | 폴더 포함 (삭제할 파일의 폴더 포함 삭제) |
-f | 강제로 바로 지워버리기 |
-x | .gitignore에 등록된 파일들도 삭제 (기본적으로는 삭제하지 않음) |
ex 1 ) git clean -n (관리되지 않는 파일 보여주기)
ex 2 ) git clean -nd (관리되지 않는 파일 폴더 포함 보여주기)
ex 3 ) git clean -i (삭제될 내역들 고르는, 인터렉티브 모드 시작)
ex 4 ) git clean -di (삭제될 내역들 고르는, 인터렉티브 모드 시작으로, 폴더까지 포함해서 보여줌)
ex 5 ) git clean -df (폴더 포함 관리되지 않는 파일들 강제 삭제)
2. 커밋하지 않은 변경사항 되돌리기
$git restore
# 특정 파일을 지정된 상태로 복구한다.
# 기존에 checkout이, restore과 switch로 분리되었다.
- 이를 사용해서, 특정 파일을 Working Directory 혹은 Staging area로부터 되돌려놓을 수 있다.
1) Woirking Directory로부터의 파일 복구 방법
# 해당 파일에 대해 변경사항 복구
$git restore 파일명
# 전체 파일에 대한 변경사항 복구
$git restore .
2) Staging area에서 Working Directory로 복구 방법
# 특정 파일 되돌리기
$git restore --staged 파일명
# 전체 되돌리기
$git restore --staged .
3) 파일을 특정 커밋의 상태로 되돌리는 방법
$git restore --source (헤드 또는 커밋 해시) (파일명)
- 커밋이 변하는 것이 아니라, 파일의 내용만 변화하는 것이다.
- 즉, 내용이 저장된 상태(working directory)로만 만든 것이며, git add + git commit을 통해 커밋을 따로 해줄 필요가 있다.
3. reset 이후 복구 방법
1) 커밋 15개 되돌리기 (reset으로 과거로 돌아가기)
$git reset --hard HEAD~15
2) 커밋 되돌리기 전 상태로 돌아가기
$git reflog
# reset으로 사라진 커밋을 복구할 수 있는 명령어
# reflog는 프로젝트가 위치한 커밋이 바뀔 때마다 기록되는 내역을 보여주고,
# 이를 사용하여 reset하기 이전 시점으로 프로젝트 복구 가능하다.
# 이후 reflog에서 돌아갈 부분의 해시값을 복사해서 아래의 명령어를 입력하면 되돌리기가 가능함.
$git reset --hard 해시값
* rebase도 마찬가지 방법으로 해결 가능
* 유의사항 - 아직 공부하고 있는 문과생 코린이가, 정리해서 남겨놓은 정리 및 필기노트입니다. - 정확하지 않거나, 틀린 점이 있을 수 있으니, 유의해서 봐주시면 감사하겠습니다. - 혹시 잘못된 점을 발견하셨다면, 댓글로 친절하게 남겨주시면 감사하겠습니다 :) |
반응형