본문으로 건너뛰기
로그인 둘러보기
개발·코딩·데이터베이스 · 윈도우즈 유틸

The BFG

0

BFG Repo-Cleaner는 Git 저장소에서 큰 파일이나 민감한 데이터를 효율적으로 제거하기 위한 도구입니다.

개발자 도구보안저장소 정리파일 제거

소개

BFG Repo-Cleaner는 Git 저장소에서 큰 파일이나 민감한 데이터를 효율적으로 제거하기 위한 도구입니다. rtyley가 개발했으며, Scala로 작성되어 git-filter-branch보다 훨씬 빠른 속도로 동작합니다. 이 프로그램은 Java 1.8 이상이 설치된 Windows 환경에서 실행되며, Chocolatey를 통해 간편하게 설치할 수 있습니다.

상세정보

큰 파일 제거

–strip-blobs-bigger-than 옵션을 사용하여 지정된 크기보다 큰 파일을 Git 히스토리에서 제거할 수 있습니다. 예를 들어 100MB보다 큰 파일은 $ bfg –strip-blobs-bigger-than 100M repo.git 명령으로 처리됩니다.

민감한 데이터 대체

–replace-text 옵션을 통해 특정 패스워드나 키워드를 ***REMOVED***로 대체할 수 있습니다. 이는 passwords.txt와 같은 파일에 목록을 만들어 사용할 수 있습니다.

파일 및 폴더 삭제

–delete-files 및 –delete-folders 옵션을 사용하여 특정 파일이나 폴더(예: .git, id_rsa)를 히스토리에서 완전히 제거할 수 있습니다.

다운로드·설치 방법

Chocolatey를 사용하는 경우, 관리자 권한으로 PowerShell 또는 CMD를 열고 다음 명령을 실행합니다: choco install bfg-repo-cleaner.これにより、BFG 실행 파일과 필요한 의존성이 자동으로 설치됩니다.

수동 설치를 원한다면, GitHub 저장소에서リリース된 두 파일(BFG.exe 및 bfg.jar)을 다운로드하여 같은 폴더에置きます。Java 1.8이 설치되어 있어야 실행할 수 있습니다.

기본 사용법

사용 전 반드시 저장소의 미러 복사본을 만들어야 합니다. 이는 일반 작업 트리가 아닌 Git 데이터베이스 전체를 복사하기 위해 필요합니다.

  1. 명령 프롬프트를 열고, 정리할 저장소의 미러 클론을 만듭니다: git clone –mirror https://example.com/your-repo.git
  2. 클론된 저장소 디렉터리로 이동합니다: cd your-repo.git
  3. BFG를 실행하여 정리를 수행합니다. 예를 들어 50MB보다 큰 블롭을 제거하려면: bfg –strip-blobs-bigger-than 50M your-repo.git
  4. 정리 후, Git의 가비지 컬렉션을 실행하여 실제로 삭제됩니다: git reflog expire –expire=now –all && git gc –prune=now –aggressive
  5. 정리된 저장소를 원격에 푸시합니다: git push

최신 커밋은 기본적으로 보호되므로, 해당 커밋에 민감한 데이터가 포함되어 있다면 먼저 커밋을 수정하거나 제거해야 합니다.

이런 경우에 유용합니다

Git 저장소에 실수로 커밋된 큰 미디어 파일(영상, ZIP, 데이터셋)이나 비밀번호, API 키와 같은 민감한 정보를 제거해야 하는 개발자나 DevOps 엔지니어에게 유용합니다. 특히 저장소 크기를 줄여 클론 속도를 개선하거나, 보안 사고 후 이력을 정화해야 할 때 효과적입니다.

지원 환경·시스템 요구사항

이 프로그램은 Windows에서 실행되며, Java 1.8 이상이 필수입니다. Chocolatey를 사용하지 않고 직접 실행할 경우 Visual Studio 2017 C++ 런타임이 추가로 필요합니다. macOS 또는 Linux에서는 원본 BFG Repo-Cleaner(jar 파일을 직접 실행)를 사용해야 합니다.

최신 버전·업데이트

현재 버전은 1.13.0이며, 2020년 1월 8일에リリース되었습니다. 이 버전은 Java 1.8을 기반으로 하며, Chocolatey 패키지로서 안정적으로 배포됩니다. 최신 소스 코드와 릴리스 정보는 GitHub 저장소에서 확인할 수 있습니다.

제한 사항·확인 사항

BFG는 최신 커밋(HEAD)의 내용을 기본적으로 수정하지 않습니다. 따라서 현재 작업 중인 브랜치의 최신 커밋에 큰 파일이나 민감한 데이터가 포함되어 있다면, 해당 커밋을 먼저 수정하거나 제거한 후 BFG를 실행해야 히스토리에서 완전히 삭제할 수 있습니다.

보호된 커밋에 있는 파일은 BFG가 삭제하지 않으며, 이는 의도된 동작입니다. 히스토리의 특정 시점을 보존해야 하는 경우에 유용하지만, 해당 시점에 문제가 있는 데이터가 있다면 별도로 처리해야 합니다.

시스템 요구사항

Java 1.8 이상이 설치되어야 하며, Chocolatey를 통하지 않고 직접 실행할 경우 Visual Studio 2017 C++ 런타임이 필요합니다.