[Git] .gitignore 특정 파일 포함 시키기

GilLog·2021년 11월 11일
0

형상관리

목록 보기
5/8

import

How can i include only specific folders in git using .gitignore?[StackOverflow]
Git Document


특정 파일 포함

.gitignore를 사용하면 Git을 통해 형상관리를 할 때,

포함시키지 않을 파일이나 폴더들을 설정할 수 있다.

이번에는 node_module 관련 특정 core script 파일을 수정할 일이 생겼는데,

해당 사항을 형상관리로 관리하고 싶어 기존에 ignore 하고 있던 목록 중에 특정 파일은 포함시키려는 상황이었다.


! 붙이기

.gitignore 파일에서 ! 키워드를 붙이면,

특정 파일이나 폴더를 형상관리 대상으로 포함시킬 수 있다.

# 모든 것을 제외
/*

# 특정 파일을 제외
/notwant/notwantfile.js

# ! 키워드로 특정 파일을 포함
!/.gitignore
!/some_other_files

# ! 키워드로 특정 폴더를 포함
!/puppet/

그래도 안되는데요

.gitignore! 키워드로 특정 파일을 포함시키고 싶었지만,

이미 상위 폴더 경로를 ignore하고 있는 상황이라,

git add 명령어로 추가 해보려 했지만 실패했다.



.gitignore! 로 포함시키려는 파일을 더 위에 선언하면 될까 했지만,

이 역시 적용되지 않았다.


git config advice.addIgnoredFile

관련해서 git config을 설정하면 적용할 수 있을까 하여,

Git 공식 문서를 참고해보았지만,

결국 해당 옵션도 ignore 된 file을 추가하려 할 때,

안내 메시지가 나오는 설정이라 효과가 없었다.


그냥 저 노란색 안내 문구가 추가되는 옵션

아래 두 가지 방법으로 해결할 수 있다.


1. 부모 경로 모두 제외

Git 공식 문서에서 ignore 관련 부분을 찾아보니,

부모 경로가 ignore 될 경우Git은 성능 이슈로 ! 키워드를 사용해도,

해당 파일을 ignore에서 제외 시킬 수 없다고 나와있었다.

An optional prefix "!" which negates the pattern; 
any matching file excluded by a previous pattern 
will become included again.
It is not possible to re-include a file 
if a parent directory of that file is excluded. 
Git doesn’t list excluded directories 
for performance reasons, 
so any patterns on contained files have no effect, 
no matter where they are defined. 
Put a backslash ("\") in front of the first "!" 
for patterns that begin with a literal "!",
for example, "\!important!.txt".

그래서 아래와 같이 사용해 보려던 ! 키워드 대신에,

node_modules/
!node_modules/axios/lib/core/createError.js

아래 처럼 형상관리에 포함하고 싶은 파일의 부모 디렉토리모두 ! 로 제외 시켜 주어,

형상관리에 포함되도록 설정할 수 있었다.

node_modules/**
!node_modules/axios/
!node_modules/axios/lib/
!node_modules/axios/lib/core


2. git add -f

아주 간단하게 .gitignore 설정 없이도,

git add -f 강제 옵션으로도 가능하다.

그냥 바로 이렇게 할걸 그랬나?..

profile
🚀 기록보단 길록을 20.10 ~ 22.02 ⭐ Move To : https://gil-log.github.io/

0개의 댓글