코딩

[GitHub] 초보 개발자를 위한 .gitignore 작성 요령과 팁

lwz7 2024. 8. 20. 21:19

.gitignore란?

 

.gitignore는 프로젝트 내에서 Git의 추적을 피하고 싶은 파일들의 명단을 적어 놓는 파일입니다. 일반적으로 개발 중 생성되는 불필요한 파일이나 민감한 정보를 포함하는 파일들을 Git이 추적하지 않도록 하는 데 사용됩니다. 예를 들어 DB, 로그 파일, 환경 설정 파일 등이 이에 해당합니다.

 

https://www.toptal.com/developers/gitignore

 

gitignore.io

Create useful .gitignore files for your project

www.toptal.com

위의 링크에 접속한 다음, 검색창에 진행 중인 프로젝트에 대한 정보를 입력하면 .gitignore에 작성해야 할 파일들에 대한 템플릿을 제공하므로 편리하게 사용할 수 있습니다.

 

 

.gitignore 위치

 

.gitignore 파일은 프로젝트의 최상단 디렉터리에 위치해야 합니다. 이 위치에 .gitignore 파일을 작성하면 프로젝트 전체에 규칙이 적용됩니다.

또한, 특정 디렉터리 내에서만 적용되는 .gitignore 파일을 작성할 수도 있습니다. 이는 프로젝트 내의 특정 부분에서만 예외 규칙을 적용하고 싶을 때 유용합니다.

(.gitignore 파일이 작성 된 위치 이하에 규칙이 적용 된다고 생각하면 이해하기 쉽습니다.)

 

 

Tip .gitignore는 언제 작성하는 게 좋을까?

 

초보 개발자로서,  프로젝트 마무리 단계에 .gitignore를 작성해서 문제가 발생한 경험이 많았습니다. 문제를 해결하기 위해 여러 가지를 시도해봤고, 그 과정에서 배운 내용을 바탕으로 몇 가지 팁을 공유합니다.

일반적으로 프로젝트를 시작할 때 초반 단계에 .gitignore 파일을 생성하는 것이 좋습니다. 그 이유는 다음과 같습니다.

 

  • 불필요한 파일 추적 방지: 프로젝트 초기 단계에서 .gitignore를 설정해두면, 불필요한 파일들이 처음부터 Git 저장소에 추가되는 것을 막을 수 있습니다.
  • 보안: 환경 설정 파일, API 키와 같은 민감한 정보가 포함된 파일들을 실수로 커밋하는 것을 방지할 수 있습니다. 이와 같은 민감한 정보는 프로젝트 초기에 .gitignore에 포함시켜야 하며, 이를 통해 보안 사고를 예방할 수 있습니다.
  • 저장소 크기 관리: 가상 환경이나 의존성 파일 등 불필요한 파일들이 저장소에 추가되는 것을 막아 저장소의 크기를 효율적으로 관리할 수 있습니다. 초기부터 불필요한 파일이 Git에 포함되지 않게 함으로써 저장소의 크기를 줄일 수 있습니다.

 

 

프로젝트 후반에 .gitignore를 작성해야 할 때

 

프로젝트 후반에 .gitignore 파일을 추가하면 이미 Git 저장소에 추가된 파일들에 대해서는 효과가 없습니다. 이미 추적 중인 파일들은 .gitignore에 추가해도 Git이 계속 추적하게 됩니다. 이런 경우 다음 절차를 따라하면 이미 추적 중인 파일을 무시하게 만들 수 있습니다.

git rm -r --cached .    # 이미 추적 중인 파일들을 Git의 캐시에서 제거합니다.
git add .               # 변경사항을 스테이징하고 커밋합니다.
git commit -m "Removed cache files"
git push                # 변경사항을 원격 저장소에 푸쉬합니다.

 

이 절차를 거치면 이전에 추적되던 파일들 중 .gitignore에 작성된 파일들은 더 이상 추적되지 않게 됩니다. 하지만 저장소의 히스토리를 변경하지는 않으므로 이전 커밋에는 여전히 해당 파일들이 존재한다는 점을 유의해야 합니다.

 

'코딩' 카테고리의 다른 글

[HTTP] PUT, DELETE 그리고 멱등성  (1) 2024.09.05
[HTTP] GET 그리고 POST  (0) 2024.08.22
[GitHub] Git과 GitHub  (1) 2024.08.17
[Python] ModuleNotFoundError  (0) 2024.08.15
[Python] 가상 환경  (0) 2024.08.14