오랜만에 프로젝트 초기 구성을 해야 하는데, 문법이 기억이 잘 나지 않아 이번 기회에 정리하려고 한다. 필요할때 볼 수 있게 정리만 하려는 목적이다.
일단 이름에서 알 수 있듯이 원격 저장소에 올리기 싫은 파일들을 명시하는 파일이다. 이때 정해진 패턴(=문법)을 따라서 파일을 구성할 수 있다. 여기에 적힌 내용들에 따라서 특정 파일이나 디렉토리들이 깃의 관리대상이 될지 안될지(=원격저장소에 안올라간다는 의미)가 정해진다.
정규 표현식의 Glob패턴과 유사하게 파일을 작성하면 된다.
만약 별도의 문법 표시없이 파일 이름만 덩그러니 적어놓으면 해당 파일이름을 모두 제거시킨다.
기본적으로 제거해야하는 내용은 아래 사진에 나온 목록들이다.보면 알 수 있듯이, 로그파일, 민감정보, 불필요한 시스템파일 등등이 있다.
일반적으로는 gitignore파일이 프로젝트의 최상단에 위치한 것이 좋다고 하는데, 꼭 최상단이 아니여도 어느 디렉토리에나 위치할 수 있다. 대신, 이경우 허용범위가 해당 디렉토리의 하위만 해당된다고 한다.
그렇다면 문법(=패턴)들을 하나 하나 차근 차근 알아보자.
여기서 의 의미를 잘 기억해야한다. 에는 /를 포함할 수 없다. 따라서, 은 여러 디렉토리의 경로 구조를 표현할 수 없는 문자다.
과 !를 사용한 사례는 아래와 같다.
/로 경로를 시작해서 파일을 지정하면 해당 경로에 위치한 파일만 딱 제거된다.
test.js라는 파일들을 깃에서 관리하지 않을 것인데, 그 중에서도 딱 현재 디렉토리에 위치한 test.js파일만 지정한 것임.
반면, /를 맨 마지막에 적는다면 아래와 같은 의미로 해석된다.
그리고 이를 응용하면, 특정 디렉토리에 위치(여기서는 하위는 포함하지 않는 예제임)한 .js확장자를 가진 파일들을 모두 제외시킬 수 있다.
특정 디렉토리 하위에 위치한 모든 디렉토리에 속한 .js파일을 무시시키고 싶다면 아래와 같이 적는다.
**을 사용해서 src라는 디렉토리 하위에 있는 모든 경로의 의미를 내포하도록 만들었다.
위 예시를 보면, 현재 디렉토리에 위치한 js혹은 ts확장자를 가진 파일을 모두 지우고 있다. 여기서 다시 상기해야할 것은 *은 /를 포함하지 않는다는 것이다. 따라서 이 문장은 하위 디렉토리들에는 적용되지 않는다.
이번에는 [ ]를 활용해서 파일명을 동적으로 지정했다.
git rm -r --cached .
git add .
git commit -m "적용할 커밋 메시지"
위와 같은 명령어를 따라야 한다.
해당 명령어는 무시하고 싶은 파일들이 이미 깃에 관리되고 있는 경우에 사용하는 방법임.
참고
https://www.pluralsight.com/guides/how-to-use-gitignore-file
https://kyu9341.github.io/Git/2020/08/23/git_gitignore/