programing

하위 디렉터리를 제외한 모든 것을 무시하도록 Git에게 어떻게 말합니까?

yellowcard 2023. 5. 5. 08:47
반응형

하위 디렉터리를 제외한 모든 것을 무시하도록 Git에게 어떻게 말합니까?

저장소에 있는 모든 파일을 무시합니다. 저장소에서 발생하는 파일을 제외하고bin하위 디렉터리.다음을 추가하려고 했습니다..gitignore:

*
!bin/*

그러나 이는 원하는 효과를 발휘하지는 다음과 같습니다.다음 파일 안에 새 파일의 파일을 만들었습니다.bin/하지만 하기git status스틸 쇼nothing to commit (working directory clean).

좋은 의견이라도 있나?

이렇게 하면 루트 파일 및 루트 디렉터리가 무시되고 루트 bin 디렉터리가 무시되지 않습니다.

/*
/*/
!/bin/

이렇게 하면 하위 디렉터리와 해당 파일을 포함한 모든 bin 디렉터리를 얻을 수 있습니다.

일부 디렉토리에서 하나의 디렉토리 "MY_SUPER_DUPER_TEMPLATE_directory"를 제외한 모든 항목을 무시하는 방법

구조: /bitrix/templates/MY_SUPER_DUPER_TEMPLATE_directory

/*
!/bitrix
/bitrix/*
!/bitrix/templates
/bitrix/templates/*
!/bitrix/templates/MY_SUPER_DUPER_TEMPLATE_directory
*.DS_Store
*.gitignore

대상으로 이동하는 동안 모든 항목을 제외해야 하지만 대상을 포함해야 합니다.

참고: 이 파일은 제외 파일(예: gitignore)이므로 논리가 반전됩니다.tsp 디렉토리를 제외한 모든 tsp 디렉토리를 무시하고 src 디렉토리를 제외한 모든 tsp 디렉토리를 무시합니다.

/*
!/tsp
/tsp/*
!/tsp/src
/tsp/src/*
!/tsp/src/*.h
!/tsp/src/*.cpp
!/tsp/src/data.txt
!/.gitignore

당신이 가진 유일한 문제는bin디렉터리 자체가 다음과 일치하지 않습니다.bin/*패턴 소짓은 심지어 안 보입니다.bin디렉토리입니다.

떠오르는 두 가지 해결책이 있습니다.

.gitignore:

*
!/bin/
!bin/*

또는

.gitignore:

*
!/bin/

bin/.gitignore:

!*

첫 번째 솔루션은 파일을 무시하는 것을 멈추지 않기 때문에 두 번째 솔루션을 선호합니다.bin호출되지 않은 하위 디렉터리에 있는 디렉터리bin이것은 당신의 상황에서 중요할 수도 있고 중요하지 않을 수도 있습니다.

공식 git doc에 따르면, 예 중 하나는 다음과 같습니다.

특정 디렉토리 foo/bar를 제외한 모든 항목을 제외하는 예(슬래시 없이 와일드카드도 foo/bar 내의 모든 항목을 제외함):

$ cat .gitignore
# exclude everything except directory foo/bar
/*
!/foo
/foo/*
!/foo/bar

선행 슬래시에 대한 설명은 다음과 같습니다.gitignore에서 선행 슬래시를 사용하는 경우.

최신 GIT 버전을 따라 해보십시오.

*
!*/
!/path/to/your/dir/**

슬래시로 패턴을 시작하여 각 패턴을 상위 git 디렉토리에 고정하는 것이 더 좋은 방법이라고 생각합니다.

/*
!/public_html
!/.gitignore

모든 파일을 무시하는 대신 디렉터리에 있는 파일이 아닌 최상위 파일만 무시합니다.

이것..gitignore내게 맞는 것:

*/
/*
!bin/

파티에 늦었지만, 어떤 대답도 저에게 "상자 밖으로" 먹히지 않았습니다.이 기능은 다음과 같습니다.

* 
!bin
!bin/**
  • 첫 번째 줄은 모든 것을 무시합니다.
  • 두 번째 줄은 "bin" 디렉터리 자체를 포함합니다.
  • 마지막 줄은 "bin" 디렉터리의 전체 내용을 포함합니다(이중 별표 참조).

이 알려지지 않은 깃벌레를 시도해 보세요.

!bin**/**

도움이 되길 바랍니다 :)

지원 문서 git 버그 샘플

PS: 댓글을 달기 전에 먼저 시도해 보세요.

나는 최근에 이것을 해야만 했습니다.

*
!sub-dir/
!sub-dir/*

폴더 하나를 제외하기 위해 왜 두 줄이 필요한지는 모르겠지만, 이것이 저와 macrows에게 효과가 있었습니다.

여기 제 해결책이 있습니다.내 시나리오에서는 다음과 같은 하위 폴더가 있는 폴더가 있었습니다.

  • 데이터베이스(기본 폴더)
    • conf(하위 폴더)
    • 드라이버(하위 폴더)
    • 병(하위 폴더)
    • sql(하위 폴더)

그리고 데이터베이스 폴더에서 는 오직 sql 폴더만 밀어넣고 싶었습니다..gitignore파일은 다음과 같습니다.

database/*
!database/sql/

여기서 첫 번째 줄은 데이터베이스 폴더의 모든 하위 폴더를 무시한다고 말하고 두 번째 줄은 데이터베이스 폴더의 모든 하위 폴더를 무시하므로 sql 하위 폴더를 제외(무시하지 않음)한다는 의미입니다.

파일과 를 사용하여 폴더를 무시해야 ./*

-- **/node_modules

++ **/node_modules/*

그리고나서

++ !node_modules/@my-package/

언급URL : https://stackoverflow.com/questions/1248570/how-do-i-tell-git-to-ignore-everything-except-a-subdirectory

반응형