.git는 제외 폴더를 무시하지만 특정 하위 폴더를 포함합니다.
나는 그 폴더를 가지고 있습니다.application/제가 추는것은하가에 .gitignore 내부application/입니다.application/language/gr이 폴더를 어떻게 포함할 수 있습니까?
먹어봤어요.
application/
!application/language/gr/
를 하면,application/그러면 그 아래에 있는 모든 것은 항상 제외될 것입니다(일부 나중에 부정적인 제외 패턴("무시")이 아래에 있는 것과 일치할 수도 있습니다).application/).
원하는 작업을 수행하려면 "무시"하려는 모든 상위 디렉터리를 "무시"해야 합니다.일반적으로 이 상황에 대한 규칙을 쌍으로 작성하게 됩니다. 디렉토리의 모든 것을 무시하지만 특정 하위 디렉토리는 무시하지 않습니다.
# you can skip this first one if it is not already excluded by prior patterns
!application/
application/*
!application/language/
application/language/*
!application/language/gr/
사항
에 오는 행/* 의미:
- 턴
dir/이름이 지정된 디렉토리를 제외합니다.dir그리고 그 밑에 있는 모든 것들.
와 함께dir/Git은 결코 아래의 어떤 것도 보지 않을 것입니다.dir비어것떤에 "택적선도" "exclude을지적" "하않것입" "따니다을" 아래에 있는 어떤 에도 "입니다.dir. - 턴
dir/*에 대해 아무 말도 하지 않는dir그 자체; 그것은 단지 아래의 모든 것을 제외합니다.dir.와 함께dir/*는 Git가직접내처것입니다리의 입니다.dir를 "해제수 있는 (▁(것▁giving할주다▁to▁a는▁other▁patterns▁some-un▁chance)!dir/sub/).
Karsten Blees(kbles)에서 Git 1.9/2.0(2014년 1분기)에 커밋 59856de는 이러한 경우를 명확히 합니다.
gitignore.txt제외된 디렉터리의 재귀적 특성 명확화
접두사 " 택적접사두 "
!패턴을 무효화합니다. 이전 패턴에서 제외된 일치 파일이 다시 포함됩니다.파일의 상위 디렉터리가 제외된 경우 해당 파일을 다시 포함할 수 없습니다.(
*)
(*특정 조건이 충족되지 않는 한 git 2.8+, 아래 참조)
Git는 성능상의 이유로 제외된 디렉토리를 나열하지 않으므로 포함된 파일의 패턴은 정의된 위치에 관계없이 영향을 주지 않습니다.백슬래시(")를 삽입합니다.
\첫")" .!그대로" 자그대로 " 작시는패하 "로!를 들어 " 를들어예,,"\!important!.txt".디렉터리를 한 모든
foo/bar:/*는 "" "" "" "" "" "" "" 내의 항목을 합니다.foo/bar):
--------------------------------------------------------------
$ cat .gitignore
# exclude everything except directory foo/bar
/*
!/foo
/foo/*
!/foo/bar
--------------------------------------------------------------
당신의 경우:
application/*
!application/**/
application/language/*
!application/language/**/
!application/language/gr/**
지정된 폴더 내의 파일을 화이트리스트에 추가하려면 먼저 폴더를 화이트리스트에 추가해야 합니다.
2016년 2월/3월 업데이트:
git 2.9.x/2.10(2016년 중반?)을 사용하면 다시 포함된 경로에 와일드카드가 없으면 해당 파일의 상위 디렉터리가 제외된 경우 파일을 다시 포함할 수 있습니다.
Nguyễn Thai Ngọc Duy()pclouds는 다음 기능을 추가하려고 합니다.
- git v2.7.0에 대해 commit 506d8f1, commit 76b620d git v2.8.0-rc0에서 되돌림
- commit 5e57f9cgit v2.8.0-rc0,...커밋 5cee3493 git 2.8.0에서 되돌림(!).
Git 2.9+를 사용하면 실제로 효과가 있을 수 있었지만, 궁극적으로 되돌렸습니다.
application/
!application/language/gr/
@Chris Johnsen의 답변은 훌륭하지만 Git(1.8.2 이상)의 최신 버전에서는 다음과 같은 두 가지 별표 패턴을 사용하여 보다 간단한 솔루션을 사용할 수 있습니다.
# assuming the root folder you want to ignore is 'application'
application/**/*
# the subfolder(s) you want to track:
!application/language/gr/
이렇게 하면 추적할 하위 폴더의 상위 디렉터리를 "무시"할 필요가 없습니다.
Git 2.17.0과 함께 (이 버전 이전의 시기는 확실하지 않습니다.를 하여 1.8.2)로 수 있습니다.**패턴과 각 하위 디렉터리에 대한 제외를 결합하여 파일 작업을 수행합니다.예:
# assuming the root folder you want to ignore is 'application'
application/**
# Explicitly track certain content nested in the 'application' folder:
!application/language/
!application/language/gr/
!application/language/gr/** # Example adding all files & folder in the 'gr' folder
!application/language/gr/SomeFile.txt # Example adding specific file in the 'gr' folder
저는 이것만이 실제로 효과가 있다는 것을 알았습니다.
**/node_modules/*
!**/node_modules/keep-dir
이와 관련하여 비슷한 질문이 많으므로 이전에 작성한 내용을 게시하겠습니다.
제가 제 기계에서 이것을 작동시키는 유일한 방법은 다음과 같은 방식으로 작동하는 것이었습니다.
# Ignore all directories, and all sub-directories, and it's contents:
*/*
#Now ignore all files in the current directory
#(This fails to ignore files without a ".", for example
#'file.txt' works, but
#'file' doesn't):
*.*
#Only Include these specific directories and subdirectories:
!wordpress/
!wordpress/*/
!wordpress/*/wp-content/
!wordpress/*/wp-content/themes/
!wordpress/*/wp-content/themes/*
!wordpress/*/wp-content/themes/*/*
!wordpress/*/wp-content/themes/*/*/*
!wordpress/*/wp-content/themes/*/*/*/*
!wordpress/*/wp-content/themes/*/*/*/*/*
포함할 각 수준에 대해 콘텐츠를 명시적으로 허용해야 하는 방법에 주목합니다.그래서 제가 주제 아래에 하위 디렉터리 5개가 있다고 해도, 저는 여전히 그것을 철자할 필요가 있습니다.
이것은 @Yarin의 코멘트에서 나온 것입니다. https://stackoverflow.com/a/5250314/1696153
다음은 유용한 주제였습니다.
저도 노력했습니다.
*
*/*
**/**
그리고.**/wp-content/themes/**
또는/wp-content/themes/**/*
그것들 중 어느 것도 나에게 효과가 없었습니다.많은 시행착오!
가장 간단하고 아마도 가장 좋은 방법은 수동으로 파일을 추가하는 것입니다(일반적으로 이것은 다음보다 우선합니다)..gitignore rules 스타일 규칙):
git add /path/to/module
필요할 수도 있습니다.-f파일이 이미 무시된 경우.당신은 심지어 그것을 원할지도 모릅니다.-N 플래그를 추가하고, 추가할 것을 제안하지만, 즉시는 아닙니다.아직 준비되지 않은 새 파일에 대해 이 작업을 수행하는 경우가 많습니다.
이것은 쉽게 중복 QA가 될 수 있는 것에 게시된 답변의 사본입니다.가시성을 높이기 위해 이 문서를 다시 게시합니다. 무시하는 규칙이 엉망이 되지 않도록 하는 것이 더 쉽습니다.
유한사을발데는했견건, 서으로라벨에블라기본적사▁here서에▁i벨▁in,라블▁lar▁default,라▁where▁case,▁similar..gitignore에서는 별표를 사용하는 모든 항목을 무시한 다음 공용 디렉터리를 재정의합니다. (이것도 주요 답변 @Chris Johnsen과 동일한 솔루션이며, 조금 더 얇고 간결할 수 있습니다.)
*
!public
!.gitignore
OP 시나리오가 발생하는 경우에는 이 방법으로도 충분하지 않습니다.
의 특정 하위 public예를 들어 당신에게 말합니다.public/products하나의 하위 폴더에 있는 파일을 포함할 디렉토리(예: 포함할 디렉토리)public/products/a/b.jpg와 같이 구체적으로 되지 않습니다.!/public/products,!public/products/* ㅠㅠㅠ
해결책은 이와 같은 모든 경로 수준에 대한 항목을 추가하여 모든 경로 수준을 재정의하는 것입니다.
*
!.gitignore
!public/
!public/*/
!public/products/
!public/products/*
!public/products/*/
!public/products/*/
!public/products/*/*
다음위있에는치 Nagios구성에 있는 ./etc/nagios/의 /usr/lib64/nagios/plugins/이를 위해 나는 깃핀을 초기화했습니다./다음 제외 목록을 사용했습니다.
/*
!etc
etc/*
!etc/nagios
!usr
usr/*
!usr/lib64
usr/lib64/*
!usr/lib64/nagios
usr/lib64/nagios/*
!usr/lib64/nagios/plugins
Git은 다음과 같이 목록을 훑어봅니다.
/* exclude everything under / ...
!etc but include /etc back
etc/* exclude everything under /etc/...
!etc/nagios but include /etc/nagios back
!usr but include /usr back
usr/* exclude everything under /usr/...
and so on...
이름을 지정한 파일 추가.gitignore폴더로 , " , 다로니하으음다하채니웁▁to▁with,"로 채웁니다.
!/Bin/
이것은 나에게 효과가 있습니다!
많은 이는 그래서은많프로들이노드사때용문이기다만것사입니용제사외는례하는는족키시질문을에하를그머래▁.▁so▁to▁case▁exclude▁which▁use를 제외하는 것입니다.node_modules module-a 예:
!node_modules/
node_modules/*
!node_modules/module-a/
답변을 추가합니다.
!/.vs/ <== include this folder to source control, folder only, nothing else
/.vs/* <== but ignore all files and sub-folder inside this folder
!/.vs/ProjectSettings.json <== but include this file to source control
!/.vs/config/ <== then include this folder to source control, folder only, nothing else
!/.vs/config/* <== then include all files inside the folder
결과는 다음과 같습니다.
gitignore - 무시할 의도적으로 추적되지 않은 파일을 지정합니다.
특정 디렉토리 foo/bar를 제외한 모든 항목을 제외하는 예(슬래시 없이 와일드카드도 foo/bar 내의 모든 항목을 제외함):
$ cat .gitignore
# exclude everything except directory foo/bar
/*
!/foo
/foo/*
!/foo/bar
WordPress의 다른 예:
!/wp-content
wp-content/*
!/wp-content/plugins
wp-content/plugins/*
!wp-content/plugins/my-awesome-plugin
자세한 내용은 여기에서 확인하십시오. https://git-scm.com/docs/gitignore
이것은 저에게 효과가 있었습니다.
**/.idea/**
!**/.idea/copyright/
!.idea/copyright/profiles_settings.xml
!.idea/copyright/Copyright.xml
IDEA . 내 JetBrains IntelliJ IDEA .gitignore 성를구외서제여기합해니야다를oled구성old외,▁wh서▁my여▁wh제▁jet기euration,해▁jet합야brg니▁wherebr▁iglli다oreore▁exclude▁config내▁needainsit를 제외해야 합니다..idea를 제외한 폴더.idea/runConfigurations:
.idea
!.idea/
.idea/*
!.idea/runConfigurations/
참조: https://github.com/daggerok/gitignore-idea-runConfigurations
특히 오래된 Git 버전의 경우, 대부분의 제안은 그렇게 잘 작동하지 않을 것입니다.그렇다면 다른 설정과 상관없이 내용이 포함되기를 원하는 디렉터리에 별도의 .gitignore를 넣고 필요한 것을 허용할 것입니다.
예: /.gitignore
# ignore all .dll files
*.dll
/dependency_files/.gitignore
# include everything
!*
따라서 /dependency_files(심지어 .dll 파일)의 모든 항목이 정상적으로 포함됩니다.
WordPress에서 이것은 저에게 도움이 되었습니다.
wp-admin/
wp-includes/
/wp-content/*
!wp-content/plugins/
/wp-content/plugins/*
!/wp-content/plugins/plugin-name/
!/wp-content/plugins/plugin-name/*.*
!/wp-content/plugins/plugin-name/**
원하는 것을 정확히 얻기 위해 디렉토리 구조를 따라 이동하는 또 다른 예입니다. 저는.Library/그렇지만Library/**/*
# .gitignore file
Library/**/*
!Library/Application Support/
!Library/Application Support/Sublime Text 3/
!Library/Application Support/Sublime Text 3/Packages/
!Library/Application Support/Sublime Text 3/Packages/User/
!Library/Application Support/Sublime Text 3/Packages/User/*macro
!Library/Application Support/Sublime Text 3/Packages/User/*snippet
!Library/Application Support/Sublime Text 3/Packages/User/*settings
!Library/Application Support/Sublime Text 3/Packages/User/*keymap
!Library/Application Support/Sublime Text 3/Packages/User/*theme
!Library/Application Support/Sublime Text 3/Packages/User/**/
!Library/Application Support/Sublime Text 3/Packages/User/**/*macro
!Library/Application Support/Sublime Text 3/Packages/User/**/*snippet
!Library/Application Support/Sublime Text 3/Packages/User/**/*settings
!Library/Application Support/Sublime Text 3/Packages/User/**/*keymap
!Library/Application Support/Sublime Text 3/Packages/User/**/*theme
> git add Library
> git status
On branch master
Your branch is up-to-date with 'origin/master'.
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
new file: Library/Application Support/Sublime Text 3/Packages/User/Default (OSX).sublime-keymap
new file: Library/Application Support/Sublime Text 3/Packages/User/ElixirSublime.sublime-settings
new file: Library/Application Support/Sublime Text 3/Packages/User/Package Control.sublime-settings
new file: Library/Application Support/Sublime Text 3/Packages/User/Preferences.sublime-settings
new file: Library/Application Support/Sublime Text 3/Packages/User/RESTer.sublime-settings
new file: Library/Application Support/Sublime Text 3/Packages/User/SublimeLinter/Monokai (SL).tmTheme
new file: Library/Application Support/Sublime Text 3/Packages/User/TextPastryHistory.sublime-settings
new file: Library/Application Support/Sublime Text 3/Packages/User/ZenTabs.sublime-settings
new file: Library/Application Support/Sublime Text 3/Packages/User/adrian-comment.sublime-macro
new file: Library/Application Support/Sublime Text 3/Packages/User/json-pretty-generate.sublime-snippet
new file: Library/Application Support/Sublime Text 3/Packages/User/raise-exception.sublime-snippet
new file: Library/Application Support/Sublime Text 3/Packages/User/trailing_spaces.sublime-settings
이 의견과 유사하게, 어떤 솔루션과 패턴도 저에게 효과가 없었습니다. Git가 제외해야 할 파일과 폴더를 추가하도록 강요하는 것은 효과가 없었습니다.
git add -f .
jquery 프로덕션 js 파일을 추적하고 싶었기 때문에 다음과 같은 작업이 가능했습니다.
node_modules/*
!node_modules/jquery
node_modules/jquery/*
!node_modules/jquery/dist/*
해결 에서 사용하는 경우가 . 에서는 CLI를 합니다..gitignore사용자가 직접 또는 재귀적으로 무시한 디렉토리와 상관없이 포함할 (하위) 디렉토리를 정의하는 별도의 파일을 작성합니다..gitignore.
따라서 추가로 사용합니다.
git add `cat .include`
준비 중, 커밋하기 전에.
▁a에▁op다니,▁using▁to제▁suggest안,를 사용하는 것을 제안합니다..include다음과 같은 행이 있습니다.
<parent_folder_path>/application/language/gr/*
고참: 사용 사용cat별칭 (" "내")..include) $ 디렉터리하는 경우. $HOME(또는 다른 특정 디렉터리) $HOME(으)로 지정합니다.그 이유는 그 라인이기 때문입니다.homedir/app1/*으로 넘어갈 때git add의 명령어를 하면 " 명령을사면다같나니다납타이음과용"로 표시됩니다.git add 'homedir/app1/*'및 단일 따옴표(')로 문자를 묶으면 따옴표 내 각 문자의 리터럴 값이 보존되므로 별칭(예: homeedir)이 작동하지 않습니다(Bash 단일 따옴표 참조).
에 다은예다니의 ..include제 레포에 사용하는 파일입니다.
/home/abhirup/token.txt
/home/abhirup/.include
/home/abhirup/.vim/*
/home/abhirup/.viminfo
/home/abhirup/.bashrc
/home/abhirup/.vimrc
/home/abhirup/.condarc
언급URL : https://stackoverflow.com/questions/5533050/gitignore-exclude-folder-but-include-specific-subfolder
'programing' 카테고리의 다른 글
| 시간(밀리초)을 가져오는 명령 (0) | 2023.05.11 |
|---|---|
| Visual Basic에서 클래스 생성자를 구현하는 방법은 무엇입니까? (0) | 2023.05.11 |
| Angular의 객체에 선택 요소 바인딩 (0) | 2023.05.11 |
| C#에서 두 개 이상의 목록을 하나로 병합합니다.그물 (0) | 2023.05.11 |
| URL에서 파일 확장자를 가져올 수 있는 방법이 있습니까? (0) | 2023.05.11 |
