[Git] 알면 유용한 정보 #1

kk_jang93·2024년 5월 20일

프로젝트에 원하지 않는 백업 파일이나 로그파일 혹은 컴파일 된 파일들을 Git에서 제외할 수 있는 설정 파일을 말한다.
여기서 살펴보아야 할 파일 목록은 아래와 같다.

  • 보안상으로 위험성이 있는 파일
  • 프로젝트와 관계없는 파일
  • 용량이 너무 커서 제외해야되는 파일
  • 편리성 제공

.gitignore이란 무엇일까?

.gitignore파일이란 프로젝트 Repository에 원하지 않는 파일들을 git에서 제외시켜주는 설정 파일이다.
예를들어 cocoapod에 들어있는 라이브러리 파일들은 Podfile 안에 라이브러리 이름, 버전이 명시되어있는 경우가 대부분이다.
이럴 경우 불필요하게 cocoapods을 통째로 올려서 프로젝트가 무거워지는
것을 방지하기 위해 Podfile을 제외한 다른 파일들은 git에서 제외시켜 불필요한 파일을 올리는것을 막아준다.


개발을 하면서 커밋을 하는 일이 정말 많은데 간혹 쓸모없는 파일도 많아 어떤 파일을 올리는지 가독성이 떨어진다. 이러한 불필요한 파일들을 .gitignore로 깔끔하게 하려고한다.

.gitignore 자동생성 사이트 와 생성 방법


.gitignore 작성 규칙

그럼 위에 글을 정리해서 설명하겠다.

  • 어떤 파일들을 커밋 대상에서 제외시켜야 할까?
    • IDE tool과 관련된 설정파일
    • 언어의 빌드 결과물, 로그, 패키지 관련 파일
    • 그외 프로젝트에서 사용자가 제외하기 원하는 파일 등등…
  • 프로젝트에서 어떤걸 커밋 대상에서 제외 시켜야 할지 궁금하다면

https://velog.velcdn.com/images/bybye527/post/41fc2953-192b-4a10-976f-5411f817c6db/image.png


.gitignore 파일 규칙

표현의미
#, 빈라인#은 주석을 의미하며, 빈라인은 아무런 영향을 주지 않습니다.
*.a확장자가 .a 인 모든 파일을 무시합니다.
folder_name/해당 폴더의 모든 파일을 무시합니다.
folder_name/*.a해당 폴더의 확장자가 .a 인 모든 파일을 무시합니다.
folder_name/*/.a해당 폴더 포함한 하위 모든 폴더에서 확장자가 .a 인 모든 파일을 무시합니다.
/*.a현재 폴더의 확장자가 .a 인 모든파일을 무시합니다.

.gitignore 파일 이외의 방법들

특정 파일들에 대한 규칙을 저장소에 커밋 없이 ignore 처리하기

  • .git/info/exclude 파일을 수정한다 (.gitignore 파일에서와 동일한 규칙 문법을 사용한다).기술한 규칙은 해당 저장소 내에 전역으로 적용될 것이다.
  • 로컬의 모든 저장소들에 대해 동일한 ignore 처리를 하고 싶다면 글로벌 gitignore 파일 설정을 해두도록 한다글로벌 gitignore 파일은 git config --global core.excludesfile <(filepach)> 형식으로 설정

추가적으로, Git 이 관리중인 (tracked) 파일들에 대한 로컬 변경사항들을 다음과 같은 방법으로 Git 의 글로벌 설정을 변경하지 않고도 ignore 처리할 수 있다.

  • git update-index --skip-worktree [<(file)>...]: 로컬에만 적용되어야 할 설정파일 수정사항 등이 커밋되지 않도록 설정한다
  • git update-index --assume-unchanged [<(file)>...]: SDK등과 같이 수정되어서는 안되는 파일들에 대해 변경 검사를 하지 않도록 설정한다

.ignore 처리된 파일들 정리하기

git clean -X 명령어를 이용하면 ignore 처리된 파일들을 제거할 수 있다.

  • 현재 작업 디렉토리에 존재하는 ignore 처리된 파일들의 목록을 표시한다 $ git clean -Xn
  • 위 명령어에 의해 나타난 파일들을 삭제한다 $ git clean -Xf

뒤에 x에 대한 주의 사항이 있다

  • X(대문자) - 옵션은 ignore 처리된 파일들만 정리한다.

(강조)ignore 처리된 파일뿐만 아니라 Git에서 관리하지 않는 (untracked) 파일까지 제거하려면(강조)

  • x(소문자) - 위의 옵션을 사용한다.



참고 블로그
https://pino-day.tistory.com/12

profile
앱개발을 사랑하는 개발자

0개의 댓글