우리는 working directory에 있는 파일들을
git add
git commit
하면서 프로젝트를 버전 관리합니다. 그런데 working directory 안에 있음에도 불구하고 Git에 의해 그 존재 자체가 무시되는 파일들이 있습니다.
잠깐 아래 그림을 볼까요?

지금 GitHub에서 Mathbox라는 레포지토리를 만들려고 하는데요. 여기서 화면 하단을 보면
Add .gitignore: None
이라는 설정 탭이 보입니다. 이 말은 .gitignore 파일을 만들지 않겠다는 뜻입니다. .gitignore 파일이 뭘까요?
.gitignore 파일은
working directory 내에 존재하는 파일들 중에서
마치 존재하지 않는 것처럼
Git이 인식해야할 파일들의 목록이 적힌 파일입니다.
말그대로 Git이 ignore(무시)하는 파일들의 이름이 적혀있는 파일인데요. 이 탭을 클릭해보면,

알파벳 A부터 순서대로 그 알파벳으로 시작하는 단어들이 등장합니다. 이 단어들은 모두 프로그램이 실행되는 플랫폼이나 프로그래밍 언어들을 말합니다. 이런 것들 중 하나를 선택하면
그 플랫폼에서 실행될 프로그램을 만들거나,
해당 프로그래밍 언어로 코드를 작성할 때
(보통 자동으로) 생성되는 파일들
중에서 굳이 Git에 의해 버전 관리될 필요가 없는, 불필요한 파일들의 이름이 정리된 .gitignore 파일을 자동으로 생성해줍니다.
이번 토픽에서 제가 해온 프로젝트는 코드가 다 파이썬이었죠?
저는 Python을 선택할게요.

Python을 검색해서 선택하고

레포지토리를 생성하면

이렇게 .gitignore 파일이 생성됩니다. 클릭해서 내용을 보면

여러 파일 이름 또는 디렉토리 이름이 보입니다. 이 중에서 몇 가지만 추려볼게요.
.py[cod]
$py.class
*.so
이것들은 모두 무슨 말일까요? 여기서
*는 그냥 길이 0개 이상의 아무 단어라고 생각하면 됩니다.
그리고 대괄호([ ])는 그 안의 알파벳 중에 하나라고 생각하면 됩니다.
그러니까 지금 이 3가지의 뜻은 아래 표와 같은 겁니다.
단어 의미
.py[cod] .pyc 또는 .pyo 또는 pyd로 끝나는 파일명
$py.class $py.class로 끝나는 파일명
*.so .so로 끝나는 파일명
별로 어렵지 않죠?
여기에 해당하는 파일들은 모두 Git이 그냥 무시해버립니다.
그리고 위 그림에서
build/
develop-eggs/
처럼 이름 맨 뒤에 슬래시(/)가 붙은 것은 디렉토리를 말합니다. 이 2가지는 build 디렉토리에 있는 모든 파일과, develop-eggs 디렉토리에 있는 모든 파일들도 Git이 무시한다는 뜻이죠.
이렇게 Python의 .gitignore 파일에는 파이썬으로 작업을 하다보면 생겨나는 여러가지 전형적인 부산물들의 이름이 적혀있습니다.
이것들은 딱히
버전 관리를 할 정도의 가치가 없고,
오히려 버전 관리를 하면 용량만 더 차지하고,
나중에 각 버전을 살펴볼 때 가독성을 떨어뜨리기만 하기 때문에
이렇게 Git이 무시하도록 설정한 건데요. 그럼 Git이 무시한다는 게 정확히 어떤 의미일까요? 한번 살펴볼게요.
Mathbox라는 리모트 레포지토리를 GitHub에서 생성하고 git clone 커맨드로 이 리모트 레포지토리를 제 컴퓨터로 가져왔습니다.
이제 제 컴퓨터에 Mathbox라는 디렉토리가 생기겠죠?

Mathbox 디렉토리 안으로 들어가서 확인해보면 위 그림처럼 .gitignore 파일을 볼 수 있습니다.
그 다음 이 working directory 안에서 calculator.py라는 파일과 library.so라는 파일을 생성했습니다.
그리고 바로 git status 커맨드로 확인해보면 아직 calculator.py 파일을 아직 git add하지 않았다는 결과가 출력됩니다.

그런데 이상하죠? 저는 library.so라는 파일도 분명히 생성했는데 왜 calculatro.py만 뜬 걸까요? 잠깐 다시 스크롤을 올려서
Python의 .gitignore 파일에 써있던 *.so
를 찾아보세요. 이 표시에 따라 앞으로 Git은 이 working directory 안에서 .so라는 확장자로 끝나는 모든 파일들을 아예 무시하고 신경쓰지 않습니다. library.so가 바로 이 조건에 해당하는 이름의 파일이라 Git이 무시한 겁니다.
이 상태에서 .gitignore 파일을 삭제하고 다시 확인해보면,

이번엔 library.so 파일도 git add 해주지 않았다는 경고가 뜨는 것을 볼 수 있습니다. .gitignore 파일이 삭제되어 Git이 이제 모든 파일을 인식하기 때문에 그런 겁니다.
Git이 특정 파일을 무시한다는 게 어떤 의미인지 이제 아시겠죠?
만약 여러분이 working directory에서 버전 관리를 할 필요가 없는 것들이 있다면 이렇게 .gitignore 파일에 그 이름을 추가하고 버전 관리를 시작하세요. 그럼 좀더 깔끔하게 버전 관리를 할 수 있습니다. 그리고 앞으로 어떤 파일들을 무시해야할지 잘 모르겠다면 위에서 봤던 것처럼 GitHub에서 기본으로 제공하는 각 플랫폼 또는 프로그래밍 언어별 .gitignore 파일을 참고하세요.