오늘 초기세팅으로 깃허브에 .idea 폴더가 함께 올라가 오전 내내 오류와 마주했다.
.idea 폴더
.idea 폴더란?
IntelliJ 의 IDE 옵션(프로젝트별 설정값)을 저장하는 폴더이다.
각 옵션은 작업자의 컴퓨터 환경에 맞춰서 변경된다.
따라서 다른 사용자가 git clone 할 때 영향을 주지않으려면 .idea 폴더를 .gitignore 에 추가해서 깃허브에 올라가지 않도록 한다.
.gitignore 파일 미적용 해결
그래서 .gitignore에 .idea폴더를 추가하고 commit, push를 했는데 Github에 .idea폴더가 그대로 올라가있는 걸 발견했다!
그럼 .gitignore이 제대로 적용되지 않았다는 것.
원인을 찾아보니 Git의 캐시 문제라고 한다.
따라서 아래 명령어로 git의 캐시 내용을 전부 삭제 후 add all 하면 정상적으로 동작한다.
git rm -r --cached . # 캐시 삭제
git add .
나는 .idea 폴더를 포함하여 push된 커밋을 아예 흔적없이 지워버리고 싶었기 때문에 ㅎㅎ
아래 과정으로 깃에서 .idea 폴더를 제외했다.
1. reset 명령어로 push된 커밋 삭제.
2. .gitignore 파일에 .idea 추가
3. git 캐시 삭제 후 add .
4. commit & push
# 1.로컬, 원격 저장소에서 커밋 삭제
git reset HEAD^
git push -f
# 2.이 시점에 gitignore 파일에 .idea 추가
# 3.캐시 삭제 & add all
git rm -r --cached .
git add .
# 4.commit & push
git commit -m "commit 내용"
git push
이 과정을 거치면 .idea 폴더가 포함된 커밋은 삭제되고 ..gitignore 파일에 .idea 추가된것이 적용되어 이후에 .idea는 자동으로 제외되어 관리된다.
Github에 올라간 .idea 폴더 삭제
만약 reset 명령어로 ..idea 파일이 포함된 커밋 자체를 삭제하는 것이 아니라 깃허브에 올라간 .idea 폴더를 삭제하고 싶을 때는 다음 방법을 사용한다.
1. 원격 저장소에서 폴더 삭제
# 원격저장소와 로컬저장소에서 삭제
git rm [파일/폴더 이름]
# 원격저장소에서만 삭제
# 예시) git re --cached .idea/
git rm --cached [파일/폴더 이름]
--cached 옵션을 함께 작성하면 원격 저장소에 있는 파일은 삭제하고, 로컬저장소에 있는 파일은 그대로 둘 수 있다.
2. 폴더 삭제를 원격 저장소에 적용하기
git commit -m "커밋 메세지"
git push
깃 버전관이레서 완전히 제외하기 위해서는 커밋과 push까지 꼭 수행해야 적용된다.
'TIL' 카테고리의 다른 글
[KPT] 9조 KPT 회고 (0) | 2024.08.08 |
---|---|
[TIL] 팀과제의 정적 메소드(Static Method) 리팩토링 (0) | 2024.08.06 |
[TIL] Git LF will be replaced by CRLF in 에러 (0) | 2024.08.01 |
[TIL] 문자열 자르는 방법 2가지 (0) | 2024.07.31 |