Study Programming/Git

Git 파일 다루기2 - 무시(ignore)하기

네모메모 2021. 7. 5. 21:57
반응형

 


 

Git 파일 무시하기 (ignore)

- git은 Untracked파일까지 관리하므로

git이 아예 신경조차 쓰지 않을 파일들을 설정할 때 사용

    +) log, tmp, pid 같은 디렉토리나, 자동으로 생성하는 문서 같은 것들도 추가할 수 있다. 

 

- '.gitignore'파일을 만들고 그 안에 무시할 파일 패턴을 적는다. 

     ㄴ> 보통 처음에 만들어 두는 것이 편리
     ㄴ> 하나의 `.gitignore 파일을 최상위 디렉토리에 하나 두고 모든 하위 디렉토리에까지 적용시키는 방식으로 주로 사용 
           (하나만 두는 것이 아니라 하위 디렉토리에도 추가로 둘 수도 있다.)

     ㄴ>  https://github.com/github/gitignore 사이트에서 적당한 예제를 찾을 수 있다.

   

     ㄴ>  '.gitignore' 파일 ex1)

      $ cat .gitignore
      *.[oa]
      *~

             ㄴ> line1 :  확장자가 '.o' 나 '.a' 인 파일(<<각각 빌드 시스템이 만들어내는 오브젝트와 아카이브 파일)을 Git이 무시
             ㄴ> line2 :  ~ 로 끝나는 모든 파일(<<Emacs나 VI 같은 텍스트 편집기가 임시로 만들어내는 파일)을 무시

 

 


 

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

 ▶ 아무것도 없는 라인이나, `#`로 시작하는 라인은 무시한다.
 ▶ 표준 Glob 패턴을 사용한다. 이는 프로젝트 전체에 적용된다.
      ㄴ Glob 패턴 : 정규표현식을 단순하게 만든 것으로 보통 쉘에서 많이 사용한다. 
           ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
            - '*' (=애스터리스크=별표) : 문자가 하나도 없거나 하나 이상을 의미
            - '*' 2개를 사용 : 디렉토리 안의 디렉토리 까지 지정할 수 있다.
                                                    ex) a/*/z 패턴은 a/z, a/b/z, a/b/c/z 디렉토리
               ※ 참고 커다란 디렉터리 트리에서 《**》 패턴을 사용하면 과도한 시간이 걸릴 수 있습니다.
            - 중괄호 안에 있는 문자 : '[abc]'는 중괄호 안에 있는 문자 중 하나를 의미 (그러니까 이 경우에는 a, b, c)
            - 중괄호 안의 캐릭터 사이에 하이픈(-) : [0-9]처럼 사용하면 그 캐릭터 사이에 있는 문자 하나를 말한다.
            - '?' (물음표) : 문자 하나
           ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ           
                    ex1) /**/*.js  : 현재 디렉토리와 그 하위 디렉토리 내에 존재하는 모든 .js 파일들을 선택
                    ex2) /*.{js,ts} : 현재 디렉토리 내에 존재하는 모든 .js, .ts파일들을 선택   
                    ex3) /example[1-3].js : 현재 디렉토리 내에 있는 example1.js, example2.js, example3.js파일들을 선택
           ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ                               
 ▶ 슬래시(/)로 시작하면 하위 디렉토리에 적용되지(Recursivity) 않는다.
 ▶ 디렉토리는 슬래시(/)를 끝에 사용하는 것으로 표현한다.
 ▶ 느낌표(!)로 시작하는 패턴의 파일은 무시하지 않는다.
- 패턴 규칙을 사용한 '.gitignore' 파일 ex)

        # 확장자가 .a인 파일 무시

         *.a

         # 윗 라인에서 확장자가 .a인 파일은 무시하게 했지만 lib.a는 무시하지 않음
         !lib.a

         # 현재 디렉토리에 있는 TODO파일은 무시하고 subdir/TODO처럼 하위디렉토리에 있는 파일은 무시하지 않음
         /TODO

         # build/ 디렉토리에 있는 모든 파일은 무시
         build/

         # doc/notes.txt 파일은 무시하고 doc/server/arch.txt 파일은 무시하지 않음
         doc/*.txt

         # doc 디렉토리 아래의 모든 .pdf 파일을 무시
         doc/**/*.pdf

 

   
   


 

 

END!


스터디 도움 참조 블로그 (References)

- 버전 관리(VC) 위키백과
https://ko.wikipedia.org/wiki/%EB%B2%84%EC%A0%84_%EA%B4%80%EB%A6%AC

- 누구나 쉽게 이해할 수 있는 Git 입문
https://backlog.com/git-tutorial/kr/

/입문편/Git의 기본/이력을 관리하는 저장소
https://backlog.com/git-tutorial/kr/intro/intro1_2.html

- git--distributed-even-if-your-workflow-isnt (Pro Git Book)
https://git-scm.com/book/en/v2

- git--distributed-even-if-your-workflow-isnt (Pro Git Book) / ch2.2
https://git-scm.com/book/ko/v2/Git%EC%9D%98-%EA%B8%B0%EC%B4%88-%EC%88%98%EC%A0%95%ED%95%98%EA%B3%A0-%EC%A0%80%EC%9E%A5%EC%86%8C%EC%97%90-%EC%A0%80%EC%9E%A5%ED%95%98%EA%B8%B0


 

반응형