코딩항해기

[Git] push 특정 파일, 폴더 제외 (ignore) 본문

git

[Git] push 특정 파일, 폴더 제외 (ignore)

miniBcake 2024. 9. 19. 16:06

 

특정 파일, 폴더를 깃 관리에서 제외하고 싶을 때는 .gitignore 파일을 이용하면 된다.

먼저 메모 파일을 하나 만든 뒤 이름을 .gitignore로 변경한다. (확장자가 붙지 않도록 주의한다)

 

이 안에 git 관리에서 제외할 파일, 폴더명을 작성하면 되는데 Glob패턴을 사용한다.

 

.gitignore 파일에 입력하는 패턴 규칙

  • 아무것도 없는 라인이나, #으로 시작하는 라인은 무시
  • /로 시작하면 하위 디렉터리에 적용되지 않음 (recursivity)
  • 디렉터리는 끝에 슬래시 /를 사용하는 것으로 표현
  • !로 시작하는 패턴의 파일은 무시하지 않음
  • *: 문자가 하나도 없거나 하나 이상을 의미
  • [abc]: 는 중괄호 안에 있는 문자 중 하나를 의미 (이 경우 a 혹은 b 혹은 c)
  • ?: 문자 하나를 의미
  • [0-9]: 캐릭터 사이에 있는 문자 하나를 의미
  • * 두 개: 디렉터리 안의 디렉터리까지 의미
    ex) a/**/z 패턴은 a/z, a/b/z, a/b/c/z 와 같이 a와 z 사이의 모든 디렉터리 및 파일을 의미
# 파일 제외 (파일명.확장자)
파일명.txt

# 현재 경로에 있는 파일만 제외 (다른 경로의 동일한 파일명은 추적)
/파일명.txt

# 특정 경로안의 특정 파일 제외
폴더명/파일명.txt

# 특정 폴더안의 파일 전부 제외
폴더명/

# 해당 확장자 파일 전체 제외
*.txt

# 예외
!제외할 파일명.txt

 

 

 

사용

 

 

new.txt 파일과 .gitignore 확장자를 가진 파일을 제외했다.

이 상태로 관리할 수 있는 파일의 상태를 보면,

 

제대로 제외된 것을 확인할 수 있다.

 

 

주의사항

이미 기존의 git 관리를 받고 있던 파일이나 폴더는 ignore 파일에 작성하고 add > commit > push해도 무시되지 않는다.

이럴 때는 기존에 가지고 있던 cached를 치워야된다.

## 파일 이라면
git rm --cached test.txt

## 전체파일 이라면
git rm --cached *.txt

## 폴더 라면
git rm --cached test/ -r

 

git rm --cache 명령어는 Staging Area(add 를 하고나서의 영역)에서 파일을 제거하고 working directory(Local)에서는 파일을 유지하는 명령어로 실행한 후 꼭 commit을 해야한다.

 

기존에 관리하고 있던(commit된 것들) 파일을 cached 하지 않고도 무시하는 방법도 있다.

 

무시 선언

$ git update-index --assume-unchanged [파일명]

 

 

취소 선언

 

$ git update-index --no-assume-unchanged [파일명]

 

 

무시 파일 조회

$ git ls-files -v|grep '^h'