Git 정리: 추적되지 않은 파일 제거 및 저장소 정리

Git 저장소에서 작업할 때는 저장소 버전 관리 시스템의 일부가 아닌 추적되지 않는 파일과 디렉토리를 누적하는 것이 일반적입니다. 이는 임시 파일, 빌드 아티팩트 또는 커밋되지 않은 로컬로 생성된 파일 등을 포함할 수 있습니다. 시간이 지남에 따라 이러한 파일들은 작업 디렉토리를 혼란스럽게 만들어 깨끗하고 조직적인 작업 공간을 유지하는 데 어렵게 만들 수 있습니다.

이 문제를 해결하기 위해 Git은 추적되지 않는 파일과 디렉토리를 제거하는 git clean 명령을 제공합니다. 이 안내서에서는 안전하게 git clean을 사용하는 방법, 다양한 옵션 및 의도하지 않은 파일 삭제를 피하면서 Git 저장소를 정리하는 데 가장 좋은 방법을 보여드리겠습니다. 더 많은 학습을 위해 추천합니다. Git의 기초GitHub 개념 소개 코스를 수강하여 버전 관리 및 Git과 GitHub의 차이에 대해 배우세요.

git clean 이해하기

git clean 명령어는 작업 디렉토리에서 추적되지 않는 파일을 제거하는 Git에서 유용한 도구입니다. git clean 명령어는 작업 디렉토리를 pristine 상태로 재설정해야 할 때 유용합니다. 브랜치를 전환하기 전이나 임시 파일을 생성하는 빌드 프로세스를 실행한 후와 같은 경우입니다. 그러나 git clean 명령어는 추적되지 않는 파일과 디렉토리를 영구적으로 삭제하므로 휴지통이나 재활용통으로 이동시키지 않기 때문에 주의해서 사용해야 합니다.

git reset 또는 git checkout과 달리, git clean은 엄격하게 버전 제어가 되지 않는 파일과 디렉토리를 다룹니다. 이에는 포함됩니다:

  • 빌드에 의해 생성된 임시 파일

  • 로그 파일 또는 캐시된 데이터

  • .gitignore에 나열된 파일들 (명시적으로 -x로 지정된 경우)

git clean 명령어는 깔끔한 작업 디렉토리를 유지하는 데 유용하며, git resetgit checkout과 같은 다른 Git 명령어와 함께 사용되어 추적 파일의 변경 사항을 관리합니다.

저는 Complete Git Cheat Sheet을(를) 일반적인 Git 명령어에 대한 편리한 참조 가이드로 활용합니다.

git clean의 일반적인 사용 사례

git clean 명령어는 깔끔한 작업 디렉토리를 유지하는 데 유용한 도구입니다. 아래는 git clean이 불필요한 파일 및 디렉토리를 안전하게 제거할 수 있는 몇 가지 일반적인 사용 사례입니다.

추적되지 않는 파일 제거

Git 리포지토리에서 작업할 때 추적되지 않는 파일은 시간이 지남에 따라 누적될 수 있습니다. 다음 옵션을 사용하여 이러한 파일을 제거하는 데 도움이 됩니다:

  • git clean -f: 추적되지 않는 파일을 강제로 제거합니다.

  • git clean -fd: 추적되지 않는 파일 및 디렉토리를 제거합니다.

  • git clean -fx: .gitignore에 나열된 것과 같이 추적되지 않는 파일 및 무시된 파일을 제거합니다.

그러나 -fx 옵션을 사용할 때 주의해야 합니다. 왜냐하면 무시된 파일도 제거하기 때문입니다. 명령을 실행하기 전에 항상 드라이런(git clean -n)을 사용하여 확인하세요.

대화식 모드

git clean -i 명령은 대화식 모드를 활성화하여 사용자가 추적되지 않은 파일을 선택적으로 제거할 수 있게 합니다. 이 모드는 어떤 파일 또는 디렉토리를 삭제할지 더 많은 제어를 원할 때 유용합니다.

이미 Olympics 폴더에 변경 사항을 저장한 프로젝트에서 작업 중이라고 가정해보겠습니다. 그러나 2024_Data2025_Data라는 새 데이터 소스를 추가했습니다. git clean -i 명령을 실행하면 추적되지 않은 변경 사항을 삭제할 옵션을 선택할 수 있는 프롬프트가 표시됩니다.

  • clean: 선택한 파일 제거

  • filter: 정리할 파일을 위한 패턴 지정

  • select: 번호로 개별 파일 선택

  • quit: 아무 것도 삭제하지 않고 종료

git clean -i 대화형 모드. 저자에 의한 이미지.

안전한 실행

git clean -n 옵션을 사용하면 “안전한 실행”을 수행하여 실제로 삭제하지 않고 삭제될 것으로 예상되는 추적되지 않은 파일과 디렉토리의 목록을 표시합니다. 이를 통해 변경 사항을 실행하기 전에 검토할 수 있습니다.

아래 예시에서 git clean -n 명령은 삭제해야 할 파일을 나열하지만 삭제하지는 않습니다.

안전한 실행을 위한 git clean -n. 저자에 의한 이미지.

git 리셋과 결합

Git 작업 디렉토리를 완전히 재설정하려면 git 리셋과 git clean을 결합할 수 있습니다. 다음과 같이:

  • git reset --hard: 추적되는 파일을 마지막 커밋된 상태로 재설정하여 로컬 변경 사항을 모두 삭제합니다.

  • git clean -fd: 추적되지 않은 파일과 디렉토리를 제거하여 커밋된 파일만 남깁니다.

이 조합은 완전히 깨끗한 작업 디렉토리를 보장하여 브랜치를 전환하거나 실험적인 변경 사항을 되돌리거나 새로 시작할 때 유용합니다.

로컬 변경 사항을 덮어쓰는 최상의 방법을 배우려면 Git Pull Force: How to Overwrite a Local Branch With Remote 튜토리얼을 확인하세요.

git clean을 사용하는 단계별 가이드

이 단계를 따라서 Git 저장소를 안전하게 정리하고 원치 않는 추적되지 않은 파일과 디렉토리를 제거하세요.

단계 1: 현재 상태 확인

정리하기 전에 git status를 실행하여 저장소의 현재 상태를 확인하여 어떤 파일이 추적되지 않았는지 확인하세요.

git status

저장소의 현재 상태를 확인하기 위해 git status를 실행하세요. 저자 제공 이미지.

단계 2: 제거될 항목 미리보기

어떤 제거 명령을 실행하기 전에 git clean -n을 사용하여 제거될 항목을 미리 볼 수 있습니다.

git clean -n

무엇을 삭제할지 미리보기하기 위해 git clean -n을 사용하세요. 저자 제공 이미지.

단계 3: 추적되지 않은 파일 제거

미리보기가 올바르게 보인다면 git clean -f를 실행하여 추적되지 않은 파일을 제거하세요.

git clean -f

git clean -f를 사용하여 추적되지 않은 변경 사항 제거하기. 저자 제공 이미지.

단계 4: 추적되지 않은 디렉토리 제거

git clean -fd를 사용하여 추적되지 않은 디렉토리를 제거하세요.

git clean -fd

추적되지 않는 디렉토리를 제거하려면 git clean -fd를 사용하세요. 이미지 제공: 작성자.

5단계: 무시된 파일 제거

추적되지 않은 파일과 무시된 파일을 모두 제거하려면 git clean -fx 명령어를 사용하세요.

git clean -fx

6단계: 선택적 정리를 위한 대화형 모드 사용

더 많은 제어를 원한다면 대화형 제거를 위해 git clean -i를 사용하는 것을 고려하세요. 이 모드를 사용하면 삭제할 파일을 개별적으로 선택할 수 있습니다.

Git clean -i

선택적 정리를 위한 git clean -i 대화형 모드. 이미지 제공: 작성자.

git clean vs. 다른 Git 명령어들

git clean 명령어는 파일을 수정하거나 초기화하는 다른 Git 명령어들과 자주 비교됩니다. 아래 표는 주요 차이점을 강조합니다:

Command Function
git clean 추적되지 않는 파일과 디렉토리를 영구적으로 제거합니다.
git reset 추적된 파일을 이전 상태로 초기화하여 스테이징된 변경사항과 커밋된 변경사항에 영향을 미칩니다.
git checkout (또는 git restore) 추적된 파일의 변경사항을 폐기하지만 파일은 제거하지 않습니다.
git stash 나중에 사용할 수 있도록 추적된 변경사항과 추적되지 않은 변경사항을 임시로 저장합니다.

Git Clean 모범 사례

git clean를 안전하고 효과적으로 사용하려면 다음 모범 사례를 따르세요:

  • 삭제 전 드라이 런(-n) 사용: git clean -n 옵션을 항상 사용하여 git clean을 실행하기 전에 드라이 런을 수행하세요. 이를 통해 실제로 삭제하지 않고 제거될 파일을 미리 볼 수 있습니다.

  • 무시된 파일에 유의하세요:git clean을 사용할 때, 무시된 파일을 제거하는 -x 옵션을 사용할 때 주의하세요. 이는 .gitignore에 나열된 중요한 구성 파일을 삭제할 수 있습니다. 무시된 파일을 제거해야하는 경우 git clean -fx 명령을 사용하십시오.

  • Git 리셋과 결합하여 완전한 정리: 깃 저장소를 완전히 초기화하려면, git resetgit clean과 결합하세요. 여기서 git reset --hard는 추적 파일을 마지막 커밋 상태로 복원하고 git clean -fd는 추적되지 않은 파일과 디렉토리를 삭제합니다.

  • 상호 작용 모드(-i)를 사용하여 안전한 삭제: 파일을 무작정 삭제하는 대신, 상호 작용 모드(git clean -i)를 사용하여 삭제할 파일을 검토하고 선택합니다.

잠재적 위험 및 주의사항

git clean을 사용할 때 조심하지 않으면 파일을 영구적으로 삭제하기 때문에 위험할 수 있습니다. 고려해야 할 주요 위험과 주의사항은 다음과 같습니다:

  • 파일이 영구적으로 삭제됩니다: 일시적으로 변경 사항을 저장하는 git stash와 달리, git clean은 추적되지 않는 파일과 디렉토리를 영구적으로 삭제합니다. 한 번 삭제되면 Git을 통해 이러한 파일을 복구할 수 없습니다. 파일을 나중에 필요로 할 수도 있으므로 git clean 명령을 실행하기 전에 파일을 stash하거나 백업하는 것을 고려해야 합니다.

  • -x 옵션을 사용할 때 주의: git clean-fx를 사용하면 무시된 파일이 제거되며, 이는 .gitignore에 나열된 중요한 구성 파일이나 node_modules/venv/와 같은 종속성 캐시를 포함할 수 있습니다. 이러한 파일을 실수로 제거하면 빌드나 개발 환경이 망가질 수 있으므로 필요할 때만 이 옵션을 사용해야 합니다.

  • 첫 번째 드라이 런 실행: git clean -n을 실행하기 전에 항상 드라이 런을 수행하십시오. 이 단계를 통해 어떤 파일이 삭제될지 미리 볼 수 있어 중요한 파일을 실수로 삭제하는 것을 피할 수 있습니다.

  • 대체 방법: 어떤 상황에서는 git clean 대신 git stash를 사용하는 것이 더 나은 옵션일 수 있습니다. git stash -u 명령은 추적되지 않은 파일을 숨기고 무시된 파일은 제외하여 나중에 복구할 수 있도록 합니다. git stash pop은 필요한 경우 숨겨진 변경 사항을 복원합니다. 이 방법은 브랜치를 전환하거나 변경 사항을 영구적으로 손실하지 않고 작업 공간을 정리해야 할 때 유용합니다.

결론

잘 유지되는 코드베이스는 세심함, 효율성, 그리고 디지턼 자산을 책임감 있게 관리할 수 있는 능력을 보여줍니다. 고용주들은 git clean -n을 사용하여 파일을 삭제하기 전에 주의를 기울이고, -x를 사용하여 무시된 파일을 조심스럽게 다루며, git stash와 같은 안전한 대안을 활용하는 등의 모범 사례를 이해하는 개발자를 찾습니다.

DataCamp 강좌를 수강하는 것은 배우는 좋은 방법뿐만 아니라 소프트웨어 개발을 진지하게 다룬다는 신호를 고용주에게 보내는 좋은 방법입니다. 그 방향으로, 모든 수준을 위한 상위 20개 Git 인터뷰 질문 및 답변 블로그 글을 공부하고, 새로운 Git Fundamentals 스킬 트랙을 수강하여 Git에 관한 전문가가 되는 것을 추천합니다.

Source:
https://www.datacamp.com/tutorial/git-clean