여씨의 개발이야기

[GitHub] 원격 저장소에서 원하는 파일 기록까지 모두 제거하는 방법 본문

😺 Git

[GitHub] 원격 저장소에서 원하는 파일 기록까지 모두 제거하는 방법

yeossi 2022. 2. 10. 17:44

github을 이용하다 보면 잘못해서 보안에 예민한 파일들이 올라갈 때가 있다. 이렇게 이전에 올라간 파일을 원격 저장소에서도 모두 제거하고 싶을 때, 로컬에서 일반적인 파일 삭제를 하고 난 뒤에 commit을 한다면 이전 기록에서 해당 파일을 조회할 수 있기 때문에 좋지 않은 방법이다. 

이럴 때 아래와 같은 해결 방법을 사용할 수 있다. 기본적으로 Git에서 제공하는 filter-branch 툴을 사용하는 방법이 있다. 이 포스팅에서는 소개하지 않았지만 별도로 BFG Repo-Cleaner를 사용하는 방법 또한 있으니 따로 알아보면 될 것이다. 

1. git filter 명령어 입력

1-1. 파일일 경우에는 아래와 같이 입력한다

git filter-branch --force --index-filter "git rm --cached --ignore-unmatch 파일명" --prune-empty --tag-name-filter cat -- --all

1-2. 디렉토리일 경우에는 아래와 같이 입력한다

git filter-branch --force --index-filter "git rm -r --cached --ignore-unmatch 폴더명" --prune-empty --tag-name-filter cat -- --all

 

위의 명령어를 실행하고나면 로컬에 있는 저장소에 있는 이전 commit 들에서 파일이나 폴더가 전부 제거된다.


2. 원격 저장소에 반영하기

git add *
git commit -m ""
git push origin master --force


위와 같이 push –force 명령어를 입력해주면 원격 저장소에서도 반영된다.

Comments