1. gitignore란?
- 프로젝트 작업 시 로컬 환경의 정보나 빌드 정보 등
원격 저장소 Git
에서 관리 및 저장하면 안되는 파일들을 지정하여 원격 저장소에 저장되지 않도록 관리하는 파일.
- 정의한 정보들에 해당하는 파일들에 대해여 추적하지 않도록 설정하는 역할을 한다.
1) 사용 이유
- 처음 프로젝트를 생성하고, 바로 Git에 Push를 할 경우 .idea, test, gradle 설정 파일등 굳이 Git에 저장할 필요가 없는 파일들도 같이 올라간다.
- 로컬 개발에서만 필요한 파일들은 Git에서 관리할 필요가 없으니, Git에서 추적에서 제외시키기 위해 gitignore 파일을 사용하여 관리를 한다.
- Unity의 경우 package File 등의 용량 큰 파일들을 제외시켜 주기위해 사용하기도 한다.
2) 사용 방법
- 프로젝트의 최상위 경로에서 .git이 있는지 확인한다. (만약 없다면 생성한다, git init - 해당 폴더를 git으로 관리를 시작한다는 것(초기화))
- .gitignore의 파일명으로 생성한다.
- 추적을 원하지 않는 파일을 작성한다.
- 각 개발환경 별 .gitignore 샘플 : .gitignore 템플릿 모음
- .gitignore 생성해주는 홈페이지 : gitignore.io
3) 문제 해결하기
(1) 프로젝트 모든 파일을 git이 바로보고 있는 경우
- 기본으로 생성되는 .gitignore 파일을 사용하거나, 뒤늦게 추가한 상황에서 모든 파일에 댛서 gitignore를 적용 시킬 때 사용한다.
해결방법
- .gitignore파일의 생성과 내용을 다시 한번 확인한다.
- 현재 프로젝트에서 gitignore가 적용되고자 하는 파일을 제외하고 commit을 한다.
(개발 중인 파일의 내용이 사라질 수 있다.)
- 터미널 또는 Git Bash에서 .git이 있는 위치(최상위 폴더)로 이동하여 아래 명령어를 입력한다.
git rm -r --cached .
git rm의 옵션
-r : 폴더 안에 다른 파일이 있으면 해당 폴더를 지우지 못하도록 한다.
폴더를 지우기 전에 안에 있는 내용을 반복적으로 비워주고 지우겠다는 옵션.
--cached : 이 옵션을 사용하면 git에 있는 인덱스 파일만 삭제하고 실제 파일은 삭제되지 않는다.
- . : 현재 디렉터리를 뜻한다.
root 디렉토리에서 .을 사용하면 최상위 폴더 아래에 있는 모든 파일이 작업 대상이 된다.
해당 명령어를 입력 하였다면, 모든 파일에 대해서 git index가 초기화(git 원격 저장소 초기화) 되었으니 모든 파일에 대해 .gitingore가 다시 적용됩니다.
- 다시 git add를 진행하여 원격 저장소에 파일을 올리고, commit & push를 진행합니다.
요약
git rm -r --cached .
git add .
git commit -m "gitignore 적용"
(2) 프로젝트의 특정 파일만 git 이 무시하고 싶은 경우
- 기존의 gitignore 를 사용하던 중, 무시하고자 하는 파일을 추가하고자 하는 경우에 사용한다.
git rm -r --cached 파일명1 파일명 2
git rm -r --cached 폴더명
둘중 하나로 원하는 파일을 제거 후 윗 방법처럼 git add .
로 Staging Area로 올린후 Commit하면 됩니다.
(3) 원리
git rm -r --cached 주소 또는 git rm -r --cached .
git rm -r --cached
는 원격 저장소와 로컬 저장소의 staging area에서 파일을 내리면서 실제로 파일도 삭제한다.
--cached
옵션은 원격저장소에 잘못된 파일을 올렸을 때 주로 사용하는 옵션으로 원격저장소의 파일을 삭제하고, staging area에서 파일을 내리기 위해 사용한다.
참조사이트
JaeWon's Devlog
gil.log