-
[Git] git filter-repo로 올리면 안되는 파일기록 말소하기📚 개발백과 2024. 6. 24. 16:06728x90
상황:
DB data 가 들어있는 data 파일을 원격 저장소에 푸쉬했다.
파일구조:
. ├── Dockerfile ├── build ├── build.gradle ├── data ⬅️ ‼️ ├── docker-compose.yml ├── gradle ├── gradlew ├── gradlew.bat ├── readme.md ├── settings.gradle └── src
참고:
data 디렉토리는 커밋 후 수정한 적이 없고 다른 폴더와 연관관계가 없다.
해결:
1. git filter-repo 설치
brew install git-filter-repo
2.
선택 1) 안전한 방법
# 새로운 클론 생성 git clone https://your-repo-url.git cd your-repo-name # git filter-repo 실행 git filter-repo --invert-paths --path data
선택 2) 난 괜찮다는 확신이 있다
git filter-repo --invert-paths --path data --force
Completely finished after xx seconds. 가 뜨면 1차 성공.
하지만 원격 저장소 설정이 사라진다. (git remote -v 로 확인)
이유: git filter-repo가 리포지토리의 히스토리를 재작성할 때, 원격 저장소 설정을 포함하지 않기 때문. 이로 인해 원격 저장소 설정이 지워짐
3. 원격 저장소 다시 연결
git remote add origin 주소.git # 잘 연결되었나 확인 git remote -v
4. 원격 저장소의 변경사항(=기록 말소)을 로컬로 병합
git pull origin develop --rebase # 병합 충돌시 # 충돌된 파일을 수정한 후 git add <conflicted-file> git rebase --continue
5. 변경사항 강제 푸시
git push origin 브랜치명 --force
추가)
main, develop 브랜치 모두에 data 폴더가 올라간 상황이다.
그렇다면 두 브랜치 각각에서 모두 해당 명령어를 실행해야한다.
다만 첫 번째 브랜치에서 원격에 재푸쉬 한 이후에 다른 브랜치로 local checkout 하면 데이터가 날라간 것 처럼 보일텐데,
git filter-repo 가 히스토리를 재작성하면서 로컬 브랜치도 전부 날려서 그럼
해결 -> 1. 원격 브랜치로 checkout / 2. 로컬 브랜치와 원격브랜치를 연결, git pull
728x90'📚 개발백과' 카테고리의 다른 글
[TWA] 웹으로 구현한 FCM을 앱에서 띄우기 (0) 2024.08.04 2의 보수는 왜 쓰는 걸까? (0) 2024.07.28 [NCP, Docker] 왜 내 서버 Disk 사용량이 90퍼? (1) 2024.05.30 [GitHub Action, Docker, SSH] application.yml 에 환경변수 많은데 어떻게 하지 (0) 2024.05.27 [GitHub Action] Error_command not found: docker (0) 2024.05.27