git 으로 처음 프로젝트를 만들다 보니 처음 repository 를 만들때 바이너리 파일들을 몽땅 집어넣고 commit하는 실수를 하고 말았다.

그래서 다시 git rm 으로 debug 폴더를 지우고 다시 commit 을 해보았는데 로컬에서는 지워져도 다시 clone 하면 용량이 수십 MB가 되는 현상이 벌어진다.

이것은 git 안에 history를 모두 갖고 있기때문에 발생하는 현상이다. 이때는 history 를 모두 지워야 한다.


예를들어 나의 repository의 branch가 이렇게 되어있는 경우

        g - k

      / 

a - b - d - f - i - j

            \

              h


f 이전까지의 모든 history를 제거하고 싶다면 일단 f까지만의 depth(여기서는 3)를 포함하는 repository를 가져와야 한다.


$ git clone "address to .git" --depth=3      #f까지의 history 를 포함하는 repository 를 가져온다.

$ git checkout --orphan TEMP_BRANCH   #이 repository를 외톨이가 된 임시 브랜치로 체크아웃 한다.

$ git add -A                                                #현재  repository의 모든 파일을 git로 추가한다.

$ git commit -am "Initial Commit"              #여기부터를 "initial commit"으로 커밋한다.

$ git branch -D master                               #오래된 branch 를 제거한다.

$ git branch -m master                              #임시 브랜치를 master로 만든다.

$ git push -f origin master                         #강제로 Repository를 업데이트한다. (다시 되돌릴 수 없으므로 주의)


이렇게 하면 기존의 history 를 제거하고 다시 시작할 수 있다.

단 이렇게 하면 그 전으로 절대 되돌릴 수 없으므로 주의한다.



'Computer > git' 카테고리의 다른 글

git Submodule 사용하기  (0) 2019.01.16
git 디렉토리 복사 후 복구  (0) 2018.10.10
git 에 사용자 정보 입력하기  (0) 2018.03.29
git 에서 새로운 브랜치 만들기  (0) 2018.02.02

+ Recent posts