수색…


소개

비밀 번호 또는 SSH 키와 같은 중요한 데이터를 Git 저장소에 저장하는 경우 기록에서 삭제할 수 있습니다. 저장소의 히스토리에서 원치 않는 파일을 완전히 제거하려면 git filter-branch 명령이나 BFG Repo-Cleaner를 사용할 수 있습니다.

비고

  1. 공동 작업자에게 이전 (오염 된) 저장소 기록으로 만든 모든 지점을 병합하지 않고 리베이스 (rebase)하도록 지시합니다. 하나의 병합 커밋을 수행하면 오염 된 기록의 일부 또는 전부를 다시 퍼뜨릴 수 있습니다.

  2. 시간이 지났고 git filter-branch에 의도하지 않은 부작용이 없다고 확신하면 다음 명령을 사용하여 로컬 저장소의 모든 객체를 참조 취소하고 가비지 수집 할 수 있습니다 (Git 1.8.5 이상 사용).

    git for-each-ref --format = '삭제 % (refname)'refs / original | git update-ref --stdin

    git reflog expire --expire = now --all

    git gc --prune = now

필터 - 분기 사용

git filter-branch --force --index-filter \
'git rm --cached --ignore-unmatch PATH-TO-YOUR-FILE-WITH-SENSITIVE-DATA' \
--prune-empty --tag-name-filter cat -- --all

중요한 데이터가 포함 된 파일을 .gitignore에 추가하여 실수로 다시 커밋하지 않도록하십시오.

echo "YOUR-FILE-WITH-SENSITIVE-DATA" >> .gitignore
git add .gitignore
git commit -m "Add YOUR-FILE-WITH-SENSITIVE-DATA to .gitignore"

로컬 저장소를 GitHub로 푸시합니다.

git push origin --force --all

태그가있는 릴리스에서 중요한 파일을 제거하려면 Git 태그를 강제로 밀어 넣어야합니다.

git push origin --force --tags

BFG Repo Cleaner 사용

BFG Repo cleaner는 git filter-branch의 대안입니다. 원본에서 컴파일 된 바이너리처럼 잘못 처리 된 중요한 데이터 나 큰 파일을 제거하는 데 사용할 수 있습니다. 스칼라로 작성되었습니다.

프로젝트 웹 사이트 : BFG Repo Cleaner

요구 사항

Java Runtime Environment (Java 7 이상 - BFG v1.12.3은 Java 6를 지원하는 마지막 버전 임). 스칼라 라이브러리와 다른 모든 종속성은 다운로드 가능한 jar 파일에 포함됩니다.

중요한 데이터가 포함 된 파일 제거

bfg --delete-files YOUR-FILE-WITH-SENSITIVE-DATA


Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow