Git

GitLab에서 GitHub로 미러링 시 민감 정보 안전하게 제거하기

422haha 2024. 11. 20. 15:47

안녕하세요! 이번 포스팅에서는 GitLab에서 GitHub로 리포지토리를 미러링하면서 발생할 수 있는 민감 정보 제거 방법을 안내드립니다. 프로젝트를 이전하거나 협업 환경을 변경할 때, Git 히스토리에서 민감한 정보가 유출되지 않도록 처리하는 방법을 단계별로 살펴보겠습니다.

목차

  1. GitHub에 Private 리포지토리 생성
  2. GitLab 리포지토리 미러링
  3. 미러링된 리포지토리 클론
  4. .gitignore 업데이트 및 민감 파일 제거
  5. BFG Repo-Cleaner로 민감 파일 기록 제거
  6. Git 저장소 정리
  7. 변경사항 강제 푸시
  8. Git 최종 정리
  9. 참고 자료 및 결론

1. GitHub에 Private 리포지토리 생성

  1. GitHub에 접속하여 로그인합니다.
  2. 오른쪽 상단 + 아이콘 클릭 → New Repository 선택.
  3. 리포지토리 설정:
    • Repository name: 원하는 이름 입력. 예: YOGANAVI-temp.
    • Privacy: Private 선택.
    • Initialize this repository with a README: 초기화 없이 생성.
  4. Create repository 클릭.

2. GitLab 리포지토리 미러링

GitLab 리포지토리를 GitHub로 미러링합니다.

git clone --mirror https://lab.ssafy.com/s11-webmobile4-sub2/S11P12D210.git
cd S11P12D210.git/
git push --mirror https://github.com/422haha/YOGANAVI-temp.git

3. 미러링된 리포지토리 클론

GitHub로 미러링된 리포지토리를 로컬에 클론합니다.

git clone https://github.com/422haha/YOGANAVI-temp.git

4. .gitignore 업데이트 및 민감 파일 제거

.gitignore를 업데이트하고 민감 파일을 제거합니다.

  1. 브랜치 체크아웃:
  2. git checkout dev-backend
  3. .gitignore 업데이트:
    • 아래 내용을 추가:
    • /.gradle /.idea /out /build *.iml *.ipr *.iws local.properties
  4. 파일 제거:
  5. git add . git commit -m "Update .gitignore" git push origin dev-backend

5. BFG Repo-Cleaner로 민감 파일 기록 제거

BFG Repo-Cleaner를 사용하여 Git 기록에서 민감한 파일을 완전히 제거합니다.

  1. BFG 다운로드 및 이동:
    • 여기에서 bfg-1.14.0.jar 파일을 다운로드합니다.
    • 프로젝트 루트 디렉토리로 파일을 이동합니다.
  2. 민감 파일 제거 명령어 실행:
  3. java -jar bfg-1.14.0.jar --delete-files application.properties java -jar bfg-1.14.0.jar --delete-files local.properties

6. Git 저장소 정리

BFG 실행 후 저장소를 정리합니다.

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

7. 변경사항 강제 푸시

변경된 내용을 강제로 푸시합니다.

git push origin --force --all
git push origin --force --tags

8. Git 최종 정리

최종적으로 저장소에서 민감 정보가 완전히 제거되었는지 확인 후, 추가적인 정리를 진행합니다.

rm -rf .git/refs/original/
git reflog expire --expire=now --all
git gc --prune=now --aggressive
git push origin --force --all
git push origin --force --tags

9. 참고 자료 및 결론

이번 포스팅에서는 GitLab에서 GitHub로 리포지토리를 미러링하면서 민감 정보를 안전하게 제거하는 과정을 안내드렸습니다. 프로젝트를 공유하거나 협업하는 과정에서 민감한 정보가 노출되지 않도록 사전 조치를 취하는 것이 중요합니다.


참고 자료:


주의 사항:

  • 작업 전에 백업을 권장합니다.
  • 민감 정보 제거 후 Git 히스토리에 변경사항이 정확히 적용되었는지 확인하세요.

감사합니다! 😊