문제
최근들어 data-staructure를 공부하면서 JAVA 이클립스를 사용하게 되었습니다.
정확한 구조는 모르지만 이클립스 .metadata 폴더에 수시로 log들이 찍히면서 work tree에 계속 변경사항이 반영되고있었습니다.
수시로 commit 을 할수 없었고 initial commit 이후에 main에 1개의 커밋이 더 남게 되고 initial commit에는
.metadata 폴더가 올라가 있는 상황이였습니다.
commit 123123114
ADD : .gitignore
commit 1241141
initial commit
rebase & reset & revert는 아닙니다
- reabse
- root commit을 대상으로 시행하기에 가장 아래있는 initial commit 을 변경할 수는 없습니다. - reset
- 과거로 돌아가지만 --soft , --hard , --mixed 전부다 첫커밋으로 돌아간 이후 커밋을 추가하는 방식입니다. - revert
- 커밋을 삭제한 이력이 추가되는 개념이기에 전혀 맞지 않습니다.
해결법
git update-ref -d HEAD
git rm --cached -r .
git update-ref -d HEAD는 레파지토리를 업데이트 하는데 해당 헤드를 삭제하는것입니다.
원하는대로 커밋이 깔끔히 사라졌고 work tree는 유지되어서 새로운 initial commit 을 commit 하면됩니다.
git rm
rm는 remove 원격 저장소와 로컬 저장소에 있는 파일을 삭제
--cached를 붙여주면 원격 저장소에서만 삭제가 가능합니다.
.gitignore가 적용안될때 자주 사용하는 명령어 입니다.