github로 버전 관리를 하다보면 이슈가 될 만한 파일들(노출하면 안될 파일, 협업에 충돌을 야기할 수 있는 파일 등)을 실수로 올린 것을 깨닫고 당황할때가 있다.
당황하지말고 얼른 해당 파일들을 흔적도 없이 지워야한다.
모든 히스토리에서 파일을 제거하고 그 흔적까지 완전히 없애려면, git-filter-repo 유틸리티를 사용하는 것이 가장 편하다.
우선 로컬 저장소에서 히스토리를 모두 제거하는 작업을 수행한 후, 원격 저장소에 강제로 푸시해야한다.
1. git-filter-repo 설치하기
brew install git-filter-repo
2. 파일 제거
git filter-repo --path <삭제하려는 파일 경로> --invert-paths --force
저장소의 히스토리를 재작성하게 된다.
브랜치의 트래킹 정보가 손실될 수 있다.
이를 복구하기 위해서는 로컬 브랜치를 원격 브랜치에 연결해주어야한다.
다음 단계를 따라 진행해야한다.
3. 원격 저장소 다시 트래킹하기
3.1. 원격 저장소 URL 확인.
먼저 현재 설정된 원격 저장소 목록을 확인한다.
git remote -v
3.2. 원격 저장소 설정.
설정된 원격 저장소 목록에 origin이 없거나 잘못 설정된 경우, 올바른 URL로 다시 설정해야한다.
git remote add origin <github 원격 저장소>
3.3. 원격 저장소 정보 가져오기
git fetch origin
3.4. 현재 작업중인 로컬 브랜치 정보를 확인
git branch
3.5. 로컬 브랜치와 원격 브랜치 연결.
git branch --set-upstream-to=origin/<원격 현재 작업하려는 브랜치> <로컬 현재 작업하려는 브랜치>
4. 변경 사항 강제 푸시
git push origin --force --all
* 로컬 브랜치들을 모두 지우고 원격 브랜치에서 다시 받아오려면
git branch | grep -v "^*" | grep -v <남길 브랜치> | xargs git branch -D
git pull
'버전 관리 시스템 (VCS) > Git' 카테고리의 다른 글
Github Action으로 github issue와 JIRA 티켓 연동하기 (0) | 2024.03.10 |
---|