Created
January 24, 2018 04:40
-
-
Save ChangJoo-Park/eeaad35abe78a6dc81863d0e402c8d60 to your computer and use it in GitHub Desktop.
git-filter-branch, bfg
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# git filter-branch 사용법 | |
외부 라이브러리 또는 플러그인을 사용하는 경우(이후 의존성이라 지칭) 바이너리 혹은 소스코드를 프로젝트 디렉터리 안에서 관리하게 됩니다. git을 사용하는 경우 내려받은 외부 의존성들의 바이너리, 소스코드는 `.gitignore` 파일에 추가해서 git 이 추적하지 않도록 해야합니다. | |
실수 혹은 의도치 않게 git으로 관리하는 파일이 된 경우 파일을 삭제하더라도 히스토리에 남게 됩니다. 만약 용량이 큰 바이너리 파일이 히스토리에 추가된 경우 소스코드 저장소에 따라 `push` 를 할 수 없는 경우가 생깁니다. | |
**filter-branch** 기능을 사용하면 커밋에서 특정 파일을 지울 수 있습니다. 모든 커밋을 추적하여 사용자가 지정한 작업을 할 수 있습니다. | |
git으로 관리하고 있는 프로젝트에서 아래 명령어로 작업합니다. | |
```bash | |
$ git filter-branch --tree-filter 'rm -rf _삭제할 파일 또는 디렉터리_' HEAD | |
``` | |
`$` 는 터미널 표시입니다. | |
여기서는 HEAD를 타겟으로 하여 모든 커밋에서 _삭제할 파일 또는 디렉터리_를 찾아 지웁니다. 작업이 완료되면 모든 히스토리에서 제거됩니다. | |
모든 브랜치까지 포함하여 정리하려면 `--all` 옵션을 이용해 동일한 작업을 할 수 있습니다. | |
특정 커밋 구간을 지정하려면 HEAD 대신 `시작해시..마지막해시` 으로 변경할 수 있습니다. | |
예 : `18ca709..c673b40` | |
`18ca709..HEAD` 면 `18ca709` 부터 가장 최근 커밋까지 동일한 작업을 합니다. | |
--- | |
filter-branch는 속도가 매우 느립니다. 대안으로 [BFG Repo-Cleaner](https://rtyley.github.io/bfg-repo-cleaner/)가 있습니다. | |
filter-branch와 동일한 기능을 하지만 여러 옵션들을 제공해 다양하게 사용할 수 있을 것으로 보입니다. | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
git filter-branch 사용법
외부 라이브러리 또는 플러그인을 사용하는 경우(이후 의존성이라 지칭) 바이너리 혹은 소스코드를 프로젝트 디렉터리 안에서 관리하게 됩니다. git을 사용하는 경우 내려받은 외부 의존성들의 바이너리, 소스코드는
.gitignore
파일에 추가해서 git 이 추적하지 않도록 해야합니다.실수 혹은 의도치 않게 git으로 관리하는 파일이 된 경우 파일을 삭제하더라도 히스토리에 남게 됩니다. 만약 용량이 큰 바이너리 파일이 히스토리에 추가된 경우 소스코드 저장소에 따라
push
를 할 수 없는 경우가 생깁니다.filter-branch 기능을 사용하면 커밋에서 특정 파일을 지울 수 있습니다. 모든 커밋을 추적하여 사용자가 지정한 작업을 할 수 있습니다.
git으로 관리하고 있는 프로젝트에서 아래 명령어로 작업합니다.
$ git filter-branch --tree-filter 'rm -rf _삭제할 파일 또는 디렉터리_' HEAD
$
는 터미널 표시입니다.여기서는 HEAD를 타겟으로 하여 모든 커밋에서 _삭제할 파일 또는 디렉터리_를 찾아 지웁니다. 작업이 완료되면 모든 히스토리에서 제거됩니다.
모든 브랜치까지 포함하여 정리하려면
--all
옵션을 이용해 동일한 작업을 할 수 있습니다.특정 커밋 구간을 지정하려면 HEAD 대신
시작해시..마지막해시
으로 변경할 수 있습니다.예 :
18ca709..c673b40
18ca709..HEAD
면18ca709
부터 가장 최근 커밋까지 동일한 작업을 합니다.filter-branch는 속도가 매우 느립니다. 대안으로 BFG Repo-Cleaner가 있습니다.
filter-branch와 동일한 기능을 하지만 여러 옵션들을 제공해 다양하게 사용할 수 있을 것으로 보입니다.