Git_[19] git clean, git restore, git reflog

Leejaegun·2025년 1월 30일

Git

목록 보기
23/32

📌git clean

git clean은 추적하지 않은 파일들을 삭제하는 기능입니다.

옵션설명
-n삭제될 파일 목록을 미리 보기
-i인터랙티브 모드로 삭제 진행
-d폴더도 포함하여 삭제
-f강제로 즉시 삭제 (force)
-x.gitignore에 등록된 파일들도 삭제 ⚠️

보통은 폴더가 같이 나오지 않기 때문에
git clean -dn 으로 같이 나오게 합니다. 그리고 좀더 자세하게 살펴보기 위해서 git clean -dni하면 모든 폴더와 파일들에 대해서 추적되지 않는 것들을 살펴볼 수 있습니다.
그런데 뭐 별것들이 아닌 확률이 높기 때문에,
보통은 git clean -df해서 추적하지 않는 것은 다 지웁니다.

📌git restore

git restore은 원래 git checkout에서 나온 것입니다. git checkout이 너무 많은 기능을 가지고 있어서 이를 switchrestore로 나온 분리된 것이라고 생각하면 편합니다.

📊 git checkout vs git switch vs git restore 비교

기능git checkout (기존)git switch (새로운)git restore (새로운)
브랜치 변경✅ 가능 (git checkout branch)✅ 가능 (git switch branch)❌ 불가능
새 브랜치 생성 후 이동✅ 가능 (git checkout -b branch)✅ 가능 (git switch -c branch)❌ 불가능
파일 변경 취소✅ 가능 (git checkout -- file)❌ 불가능✅ 가능 (git restore file)
사용 목적브랜치 변경 + 파일 변경 취소 (혼합됨)브랜치 변경 전용파일 변경 취소 전용
Git 2.23 이후 권장 여부🚨 비추천 (혼란스러움)✅ 추천✅ 추천

git restore은 매우 유용한 기능입니다.

1. 기본적인 파일 복구 (staging 되지 않은 경우)

git restore (파일명)

변경된 파일을 워킹 디렉토리에서 원래 상태로 되돌림.
.을 사용하면 모든 변경 사항을 복구할 수 있음.

git restore .

2. Staging 영역에서 복구 (staging 된 파일 되돌리기)

현재 상태 확인

git status

git status를 통해 어떤 파일이 add 되었는지 확인.

Staging 된 파일을 되돌리기

git restore --staged (파일명)

git add로 Staging 된 파일을 다시 Unstage 상태로 돌립니다.
Staging에서 제거되지만, 파일 변경 내용 자체는 유지됩니다.

3. 특정 커밋의 상태로 파일 복구

git restore --source=(헤드 또는 커밋 해시) (파일명)

예제:

git restore --source=c308101a997b3de44ce9b661676339475a176caa tigers.yaml

특정 커밋의 상태로 파일을 복구하고 싶을 때 사용.

명령어기능
git restore (파일명)변경된 파일을 워킹 디렉토리에서 복구
git restore --staged (파일명)Staging 영역에서 Unstage (변경 내용 유지)
git restore --source=(커밋 해시) (파일명)특정 커밋의 상태로 파일 복구

📌git reflog

실수로 git reset --hard 했을 때 복구하는 방법

1. 실수로 리셋한 상황

git reset --hard HEAD^^^^

HEAD^^^^는 현재 커밋에서 4단계 이전 커밋으로 이동하는 명령어.
그런데 아차! 실수했다! 원래 상태로 되돌리고 싶다.

2. git reflog로 과거 커밋 조회

git reflog

과거의 Git 명령 실행 내역을 보여줌 (브랜치 이동, 커밋, reset 등).
예제 출력:

628f72f HEAD@{0}: reset: moving to HEAD^^^^
c9b1d3e HEAD@{1}: commit: 새로운 기능 추가
...

여기서 맨 앞의 해시값(628f72f)을 기억.

3. git reset을 사용하여 원래 상태로 되돌리기

git reset --hard 628f72f

실수하기 전 상태로 다시 복구.

명령어기능
git reflogGit에서 실행한 과거 명령 내역 확인
git reset --hard (해시값)특정 시점의 커밋으로 되돌리기
profile
Lee_AA

0개의 댓글