git 를 이용하게되면 민감한 데이터(패스워드나 SSH Key)를 commit 하기도 한다. 이 git 가 공개된 git 일 경우 보안상에 문제를 일으키기도 한다.
패스워드는 아니지만 API Key 같은 경우도 문제가 될 수 있다.  어째든 이렇게 commit 되고 나면 나중에 지운다고 해도 git 의 특성상 히스토리에 남을수 있다.  

다행히 이 히스토리까지도 지울 수 있다. 
(윈도우즈에서는 큰 따음표를 해야 한다. )

git filter-branch --tree-filter "rm -f ./path\file.py" HEAD


참고 : https://git-scm.com/book/ko/v1/Git-%EB%8F%84%EA%B5%AC-%ED%9E%88%EC%8A%A4%ED%86%A0%EB%A6%AC-%EB%8B%A8%EC%9E%A5%ED%95%98%EA%B8%B0#filter-branch%EB%8A%94-%ED%8F%AC%ED%81%AC%EB%A0%88%EC%9D%B8
https://help.github.com/articles/removing-sensitive-data-from-a-repository/

commit 된 것이 많다면 이 방법은 매우 매우 느리다. (이 때 까지 commit 한 히스토리를 다 뒤져서 수정하는 것 같다. ) 
Github 에 다시 접속하니 히스토리를 보니 남아 있었다. 뭔가 잘못한 것 같다. 


더 좋은 방법은 https://rtyley.github.io/bfg-repo-cleaner/  를 이용하는 것이라고 한다. 

사용방법은 git 를 다시 받는 것 부터 시작한다.

git clone --mirror git://example.com/some-big-repo.git
(해당 동작 후 some-big-repo.git 폴더가 생성된다. )

동일한 디렉토리에서 bfg 프로그램을 실행한다.
java -jar C:\Users\user\Downloads\bfg-1.13.0.jar  --delete-files file.py some-big-repo.git
(따로 경로자체를 지정 할 수는 없는 것 같다. 참고 https://stackoverflow.com/a/21172871 )

다시 git 를 이용해서 해당 결과를 서버에 올린다. 
cd some-big-repo.git
git reflog expire --expire=now --all && git gc --prune=now --aggressive

git push

이 결과 file.py 과 관련된 history 가 삭제된다. 이 파일의 히스토리를 유지하고 싶다면 좋은 방법은 아닌 것 같다. 

처음부터 조심히 하는게 좋을 것 같다. 그리고 회사내 중요한 것은 private 계정을 꼭 사용해야겠다.