포스트

Git 히스토리에서 민감 파일 완전 삭제 & 조직 레포까지 일괄 동기화

  • 실수로 _dev/memo.txt를 push함.
  • 단순 revert로는 과거 커밋까지 history에서 삭제 불가.

  • filter-repo로 특정 파일만 히스토리에서 제거
  • 미러 클론 후 작업, push –force

절차 ** **1. 미러 클론

1
2
3
4
bash
cd .. 
git clone --mirror https://github.com/myID/myRepo.git myRepo_mirror.git 
cd myRepo_mirror.git

2. filter-repo 실행

1
2
bash
python -m git_filter_repo --path "_dev/memo.txt" --invert-paths

3. 원격 재설정

1
2
bash
git remote set-url origin https://github.com/myID/myRepo.git

4. 강제 push

1
2
3
bash
git push --force --all 
git push --force --tags

5. 기존 로컬 repo 정리 & 새 clone

1
2
3
4
5
6
bash
cd .. 
mv myRepo myRepo_old 
# 또는 
rm -rf myRepo 
git clone https://github.com/myID/myRepo.git cd myRepo

  • 내 repo에는 문제파일의 history를 제거했다. 하지만 내 repo를 fork하는 조직 repo가 있는데, 거기에는 여전히 문제의 히스토리가 남아있다.
  • 주의사항discard/sync fork 버튼은 충돌 및 이력 꼬임 유발, 사용 금지
  • 모든 협업자는 새로 clone 필요
  • 이렇게 할 시, 이미 커밋된 민감 파일 흔적 완전 삭제 가능
  • 해결 절차:
1
2
bash
git remote add org-origin https://github.com/orgID/orgRepo.git

2. 강제 push (조직 repo)

1
2
3
bash
git push --force --all org-origin 
git push --force --tags org-origin

3. remote 연결 해제

1
2
bash
git remote remove org-origin

이 방식으로 내 repo 및 조직 repo에서 특정 파일의 히스토리를 완전히 정리할 수 있음. ** **#해시태그 #git #gittips #gitfilterrepo #gitmirror #gitcleanup #gitforcepush #repository #history #historyrewrite #gitremovefile #git실수 #민감정보 #민감파일 #비밀정보 #privatefile #secretfile #historyremoval #opensource #github #githubtips #githubfork #fork관리 #fork동기화 #orgrepo #organization #repo관리 #버전관리 #devops #개발팁 #실전팁 #클린코드 #코드정리 #historycleaning #gitignore #gitbestpractice #security #보안 #gitadvanced #collaboration #협업 #팀개발 #깃정리 #filterrepo #forcepush #커밋삭제 #커밋정리 #pullrequest #fork #discardfork #gitforkdetach #gitpush #gitpull #repositorysync #코드관리 #소스관리 #gitblog #코딩블로그 #개발블로그

이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.