오랜만에 프로젝트 초기 구성을 해야 하는데, 문법이 기억이 잘 나지 않아 이번 기회에 정리하려고 한다. 필요할때 볼 수 있게 정리만 하려는 목적이다.
일단 이름에서 알 수 있듯이 원격 저장소에 올리기 싫은 파일들을 명시하는 파일이다. 이때 정해진 패턴(=문법)을 따라서 파일을 구성할 수 있다. 여기에 적힌 내용들에 따라서 특정 파일이나 디렉토리들이 깃의 관리대상이 될지 안될지(=원격저장소에 안올라간다는 의미)가 정해진다.
정규 표현식의 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/