카테고리 보관물: Git

Git

여러 개의`.gitignore`가 눈살을 찌푸리고 있습니까? 리포지토리 .gitignore의 루트에 여러

리포지토리가 여러 개의 독립적 인 프로젝트로 구성되어 있지 않으면 리포지토리 .gitignore의 루트에 여러 파일보다 하나의 파일 만있는 것이 가장 간단한 것 같습니다 . 한 접근법이 다른 접근법보다 나을 때의 온라인 또는이 분석에 대한 표준 모범 사례가 있습니까?



답변

.gitignore다른 (하위) 디렉토리에 여러 파일 을 갖고 싶은 두 가지 이상의 상황을 생각할 수 있습니다 .

  • 다른 디렉토리는 무시할 파일 유형이 다릅니다. 예를 들어 .gitignore프로젝트의 최상위 디렉토리에서 생성 된 프로그램 Documentation/.gitignore은 무시하고 생성 된 문서는 무시합니다.

  • 단지 주어진 (하위) 디렉토리에 (당신이 사용할 수있는 특정 파일을 무시 /sub/foo.gitignore불구하고).

에 그 패턴을 기억하십시오 .gitignore패턴은 ‘/’포함하지 않는 파일, 파일에있는 (하위) 디렉토리 및 모든 서브 디렉토리에 재귀 적으로 적용 (그래서 예를 들어 패턴 name라는 이름의 파일에 적용 name하면서, 주어진 디렉토리와 모든 서브 디렉토리에있는 /name파일에 적용 주어진 디렉토리에서만이 이름으로).


답변

접선으로, 여러 .gitignore파일 을 가질 수있는 기능 이 매우 유용한 경우는 작업 사본에 커밋하지 않을 추가 디렉토리를 원하는 경우입니다. .gitignore해당 디렉토리에 1 바이트 (단일 별표 포함)를 넣으면 절대로 표시되지 않습니다 git status.


답변

.gitignore물론 자체 디렉토리에 여러 개를 가질 수 있습니다 .
파일 무시에 책임이있는 gitignore 규칙을 확인하려면 다음을 사용 git check-ignore하십시오 git check-ignore -v -- afile.

그리고 .gitignore브랜치마다 다른 버전의 파일을 가질 수 있습니다 . 하나의 브랜치가 파일을 무시하고 다른 브랜치가하지 않도록하는 종류의 구성을 이미 보았습니다 . 예를 들어이 질문을 참조하십시오 .

리포지토리에 여러 개의 독립적 인 프로젝트가 포함 된 경우 하위 모듈 로 참조하는 것이 가장 좋습니다 .
이것이 실제 모범 사례가 될 수 있으며, 이러한 프로젝트 각각 .gitignore은 글로벌 상위 프로젝트의 특정 개정판에서 참조하면서 개별 파일 (각 해당 파일 과 함께)을 복제 할 수 있습니다 .
자세한 내용 은 서브 모듈의 본질을 참조하십시오 .


git 1.8.2 (2013 년 3 월) 이후 ‘ ‘에 적용 git check-ignore -v -- yourfile되는 gitignore 실행을 확인하기 .gitignore위해 ‘ yourfile‘에 적용 할 수 있으며 해당 파일이 무시되는 이유를 더 잘 이해할 수 있습니다.
내 규칙을 무시 하는 gitignore규칙은 무엇입니까?


답변

프로 싱글

  • 찾기 쉽다.

  • 리포지토리의 여러 레벨에서 여러 개의 gitignore가있는 경우 제외 규칙을 사냥하는 것은 매우 어려울 수 있습니다.

  • 여러 파일을 사용하면 일반적으로 상당한 중복이 발생합니다.

프로 멀티

  • 범위는 필요한 파일 트리 부분에 대한 “지식”입니다.

  • Git은 파일 만 추적하기 때문에 빈 .gitignore가 “빈”디렉토리를 커밋하는 유일한 방법입니다.

    (그리고 Git 1.8 이전에는 패턴을 제외하는 유일한 방법은 패턴 my/**.example으로 작성 my/.gitignore하는 것이 었습니다 **.foo.이 이유는 지금 할 수있는 것처럼 적용되지 않습니다 /my/**/*.example.)


모든 제외 항목을 찾을 수있는 단일 파일을 선호합니다. 나는 디렉토리 당 .svn을 놓친 적이 없으며 디렉토리 당 .gitignore도 놓치지 않을 것입니다.

즉, 여러 gitignores가 일반적입니다. 당신이 그들을 사용하는 경우, 그들과 함께 일하기에 합리적이어야합니다. 예를 들어, 루트에서 한 레벨 만 디렉토리에 넣을 수 있습니다.


답변

디렉토리를 Git 리포지토리에 커밋하지만 파일이없는 시나리오 (예 logs: cache,, uploads디렉토리 등)가 많이 있습니다.

그래서 내가 항상하는 일은 .gitignore다음 내용을 가진 디렉토리에 파일 을 추가하는 것입니다 .

*
!.gitignore

.gitignore파일을 사용하면 Git은 해당 디렉토리의 파일을 추적하지 않지만 여전히 .gitignore파일 을 추가 할 수 있으므로 디렉토리 자체를 저장소 에 추가 할 수 있습니다 .


답변