1. git filter-branch --force --index-filter 'git rm --cached --ignore-unmatch 경로/파일명.확장자' --prune-empty --tag-name-filter cat -- --all
2. git add .
3. git commit -m "[Delete] file from history"
4. git push origin --force --all
이 명령어는 Git 저장소의 모든 브랜치와 태그에 대해, 지정된 경로와 파일명에 해당하는 파일을 삭제하는 Git 명령어입니다.
git filter-branch: Git 저장소의 커밋을 재작성할 때 사용하는 명령어입니다.
--force: 강제로 작업을 수행하도록 지정합니다.
--index-filter: Git 저장소의 인덱스를 변경하는 필터를 지정합니다.
git rm --cached --ignore-unmatch 경로/파일명.확장자: 지정된 경로와 파일명에 해당하는 파일을 Git의 인덱스에서 삭제합니다.
--prune-empty: 커밋이 빈 커밋일 경우 삭제합니다.
--tag-name-filter cat: 모든 태그를 다시 생성하도록 설정합니다.
-- --all: 모든 브랜치와 태그에 대해 작업을 수행합니다.
주의해야 할 점은, 이 명령어는 Git 저장소의 히스토리를 수정하므로, 수정한 커밋 이후의 모든 커밋의 해시값이 변경됩니다. 따라서, 다른 사용자들과 협업하고 있는 프로젝트의 경우, 수정한 히스토리를 push하기 전에 다른 사용자들과 충분한 협의를 거쳐야 합니다.