[Troubleshooting]

문제의 원인

Github 리포지토리에 DB 비밀번호 값을 업로드하던 중 안타까운 사고가 발생했습니다.

많은 생각이나 수정 없이 파일을 로컬에서 삭제한 후 다시 커밋

원격 오리진으로 푸시해도 히스토리에 정보가 보존됩니다.

솔루션

원본 저장소 복제

git clone --mirror (레포지토리 주소)

cd (레포지토리 폴더명)

BFG Repo 클리너 다운로드

rtyley의 BFG 저장소 클리너

$ bfg –strip-blobs-bigger-than 100M –replace-text Banned.txt repo.git git-filter-branch의 대안 BFG는 잘못된 데이터 정리를 제거하기 위한 git-filter-branch의 더 간단하고 빠른 대안입니다. git 리포지토리 기록: Crazy Big Files Re 제거

rtyley.github.io

– 다운로드한 JAR 파일을 작업하려는 프로젝트의 로컬 최상위 경로에 배치합니다. 컴퓨터에 저장

문제의 역사를 알고


– 비밀번호 값은 “database.py” 파일에 그대로 표시되어 이 기록을 지워야 했습니다.

기록 삭제

– BFG Repo-Cleaner의 문제 기록 지우기

java -jar (jar파일 경로) --delete-files (지울 파일 이름)

git reflog expire --expire=now --all && git gc --prune=now --aggressive

git push -f origin main

– 이렇게 나오면 성공


– GitHub History에서 해당 이슈의 히스토리 기록이 삭제되었는지 확인


지운 후 옷깃이 꼬였을 때 해결 방법

– 원격 저장소와 로컬 저장소가 얽혀 있는 경우 다음 명령어 입력

– 단계, 로컬에 있는 모든 파일이 없어져도 문제가 되지 않습니다. “원격 git 저장소의 마스터를 로컬로 덮어쓰고 싶습니다.”

git fetch --all
git reset --hard origin/master
git pull origin master

참고 자료

https://llshl.30

https://soulmatt.entry/git-%EC%9B%90%EA%B2%A9-master-branch-%EA%B0%95%EC%A0%9C-pull-%ED%95 %98%EA%B8%B0