code

Git의 디렉터리에 있는 파일을 어떻게 무시합니까?

starcafe 2023. 5. 23. 22:02
반응형

Git의 디렉터리에 있는 파일을 어떻게 무시합니까?

에 대한 올바른 구문은 무엇입니까?.gitignore디렉토리에 있는 파일을 무시하시겠습니까?

그럴까요?

config/databases.yml
cache/*
log/*
data/sql/*
lib/filter/base/*
lib/form/base/*
lib/model/map/*
lib/model/om/*

또는

/config/databases.yml
/cache/*
/log/*
/data/sql/*
/lib/filter/base/*
/lib/form/base/*
/lib/model/map/*
/lib/model/om/*

?

패턴 형식

  • 빈 줄은 파일과 일치하지 않으므로 읽기 쉽게 구분할 수 있습니다.

  • 로 하는 줄#댓글 역할을 합니다.

  • 접두사 " 두적접사"!패턴을 무효화합니다. 이전 패턴에서 제외된 일치 파일이 다시 포함됩니다.음수 패턴이 일치하는 경우 우선 순위가 낮은 패턴 소스를 재정의합니다.

  • 패턴이 슬래시로 끝나는 경우 다음 설명을 위해 제거되지만 디렉토리와 일치하는 내용만 찾습니다. 다른말하면로,하면,foo/ " "와 합니다.foo 링크와 .foo(이것은 일반적으로 git에서 pathspec이 작동하는 방식과 일치합니다.)

  • 되지 않은 에는 슬래시가 포함됩니다./git는 그것을 셸 글로브 패턴으로 취급하고, 그것의 위치와 관련된 경로 이름에 대한 일치를 확인합니다..gitignore 작업 ).gitignore

  • 그렇지 않으면, git은 패턴을 소비에 적합한 쉘 글로브로 취급합니다.fnmatch(3)FNM_PATHNAME가 "" " " " " "와 ./경로 이름으로예를들면,Documentation/*.html 항목 냥Documentation/git.html하지만 아닙니다.Documentation/ppc/ppc.html또는tools/perf/Documentation/perf.html.

  • 선행 슬래시는 경로 이름의 시작 부분과 일치합니다.를 들면, 들면를예,/*.c 항목 냥cat-file.c하지만 아닙니다.mozilla-sha1/sha1.c.

자세한 내용은 여기에서 확인할 수 있습니다.

git help gitignore
또는
man gitignore

그것은 전자일 것입니다.폴더 구조 대신 내선 번호로 이동합니다.

예: 내 예제 C# 개발 무시 파일:

#OS junk files
[Tt]humbs.db
*.DS_Store

#Visual Studio files
*.[Oo]bj
*.user
*.aps
*.pch
*.vspscc
*.vssscc
*_i.c
*_p.c
*.ncb
*.suo
*.tlb
*.tlh
*.bak
*.[Cc]ache
*.ilk
*.log
*.lib
*.sbr
*.sdf
ipch/
obj/
[Bb]in
[Dd]ebug*/
[Rr]elease*/
Ankh.NoLoad

#Tooling
_ReSharper*/
*.resharper
[Tt]est[Rr]esult*

#Project files
[Bb]uild/

#Subversion files
.svn

# Office Temp Files
~$*

갱신하다

저는 아래 댓글에서 업데이트를 제공할 것으로 생각했습니다. OP의 더 예를 하세요..gitignore통사론

커뮤니티 위키(지속적으로 업데이트됨):

.gitignore for Visual Studio 프로젝트 및 솔루션

특정 언어를 사용하는 더 많은 예는 여기에서 찾을 수 있습니다(Chris McKnight의 의견 덕분).

https://github.com/github/gitignore

슬래시가 포함된 경로는 .gitignore 파일(일반적으로 저장소의 최상위 수준)이 포함된 디렉터리에 상대적인 것으로 간주되지만 하위 디렉터리에 배치할 수도 있습니다.

제시한 모든 예에서 경로에는 슬래시가 포함되어 있으므로 두 버전은 동일합니다.선행 슬래시를 배치해야 하는 유일한 경우는 경로에 슬래시가 아직 슬래시가 없습니다.예를 들어 저장소의 최상위 수준에서만 foo를 무시하려면 다음을 사용합니다./foo간단하게 쓰기foo저장소의 아무 곳에서나 foo라고 불리는 모든 것을 무시할 것입니다.

와일드카드도 중복됩니다.전체 디렉토리를 무시하려면 디렉토리 이름을 지정합니다.

lib/model/om

와일드카드를 사용하는 유일한 이유는 나중에 디렉터리에서 무언가를 무시하지 않으려면 다음과(와)

lib/model/om/*      # ignore everything in the directory
!lib/model/om/foo   # except foo

슬래시가 선행되면 .gitignore 파일이 있는 디렉터리에 대해서만 무시 항목이 유효하다는 것을 나타냅니다. 지정*.o의 모든 o에 .o 파일은 .o 파일을 무시합니다./*.odir에서는 할 수도 그을무수있지만도만시말할, 다하지시들,만▁would,▁just지▁them,말▁that하▁dir▁in▁ignore▁while▁again,다시./foo/*.ofoo/*.o는 /foo/*o 파일에서만 합니다.

시키려면 .gitignore 파일을 합니다./**/.

모두 하기: 모무시하기두*.map에 있는 /src/main/폴더 및 하위 폴더의 용도:

/src/main/**/*.map

질문의 두 예는 실제로 데이터 손실로 이어질 수 있는 매우 나쁜 예입니다!

로 덧붙이지 마세요./*.파일의합니다. 한gitignore 파일의 디렉터리로 이동합니다. 이유가 없는 한!

예를 들어, "만약 당신이 나중에 디렉토리의 무언가를 무시하지 않을 의도가 있다면" 제프롬이 쓴 것이 좋은 이유일 것입니다.

그렇지 않으면 안 되는 이유는 첨부하기 때문입니다./*디렉토리에 대한 작업은 디렉토리의 모든 내용을 적절하게 무시하는 방식으로 수행되지만, 다른 한편으로는 위험한 부작용이 있습니다.

을 하면,git stash -u된 파일과 되지 않은 파일을 으로 저장하는 ) 또는 (추적되지 않은 파일을 저장하는 경우)git clean -df파일을 하려면) 모든 가 추가되어 됩니다./*되돌릴없이 삭제됩니다!

약간의 배경

저는 이것을 힘든 방법으로 배워야만 했습니다.우리 팀의 누군가가 나타나서,/* 몇몇 로.gitignore의 일부 디렉토리로 이동합니다.시간이 지남에 따라 저는 특정 디렉토리가 갑자기 사라지는 경우가 있었습니다.애플리케이션에 필요한 기가바이트의 로컬 데이터가 포함된 디렉토리입니다.아무도 그것을 설명할 수 없었고 저는 항상 모든 데이터를 다시 다운로드하는 것을 싫어합니다.잠시 후, 저는 그게 아마도 그의 가족들과git stash어느 날 (무시된 파일을 보관하면서) 로컬 레포를 정리하고 싶었고 사용하고 있었습니다.git clean -df제 데이터가 사라졌습니다.이번에는 충분히 참고 그 문제를 조사했습니다.나는 마침내 그 이유가 첨부된 것이라는 것을 알았습니다./*.

저는 그것이 어떻게든 설명될 수 있다고 생각합니다.directory/*디렉토리의 모든 내용을 무시하지만 디렉토리 자체는 무시하지 않습니다.따라서 삭제될 때 추적된 것으로 간주되거나 무시되지 않습니다.그럼에도 불구하고.git status그리고.git status --ignored약간 다른 그림을 보여줍니다.

재생산 방법

다음은 행동을 재현하는 방법입니다.현재 Git 2.8.4를 사용하고 있습니다.

다디렉입다니라는 입니다.localdata/더미 파일이 들어 있는 경우(important.dat되며, put)을 됩니다./localdata/*.gitignore파일. 언급된 두 git 명령 중 하나가 지금 실행되면 디렉터리가 (예상치 않게) 손실됩니다.

mkdir test
cd test
git init
echo "/localdata/*" >.gitignore
git add .gitignore
git commit -m "Add .gitignore."
mkdir localdata
echo "Important data" >localdata/important.dat
touch untracked-file

만약 당신이git status --ignored여기서 다음을 얻을 수 있습니다.

On branch master
Untracked files:
  (use "git add <file>..." to include in what will be committed)

  untracked-file

Ignored files:
  (use "git add -f <file>..." to include in what will be committed)

  localdata/

이제 둘 중 하나.

git stash -u
git stash pop

또는

git clean -df

모두 된 것으로 디렉토리 " 경모우무된것로알디진리렉토려두"localdata사라질 것입니다!

이것이 버그로 여겨질 수 있을지는 모르겠지만, 적어도 아무도 필요로 하지 않는 기능이라고 생각합니다.

저는 그것을 git 개발 리스트에 보고하고 그들이 그것에 대해 어떻게 생각하는지 볼 것입니다.

다음과 같습니다.

config/databases.yml
cache
log
data/sql
lib/filter/base
lib/form/base
lib/model/map
lib/model/om

또는 심지어 다음과 같은 경우도 있습니다.

config/databases.yml
cache
log
data/sql
lib/*/base
lib/model/map
lib/model/om

만일의 경우에는filter그리고.form 중 /b/b/b/b/b/b/b/b/b/b/b/b/b/b/b/b/b/b/b/b/b/b/b/b/b/b/b/b/b/b.base무시해야 하는 하위 디렉터리입니다(별표로 수행할 수 있는 작업의 예로 참조).

첫 번째.이러한 파일 경로는 .gitignore 파일이 있는 위치에서 상대적입니다.

나는 당신이 생성할 수 있는 GUI 및 CLI 기반 서비스를 유지하고 있습니다..gitignore템플릿은 https://www.gitignore.io 에서 매우 쉽게 찾을 수 있습니다.

검색 필드에 원하는 템플릿을 입력하거나 명령줄 별칭을 설치하고 실행할 수 있습니다.

$ gi swift,osx

Android Studio 프로젝트의 .gitignore 파일 샘플은 아래와 같습니다.

# built application files
*.apk
*.ap_

# files for the dex VM
*.dex

# Java class files
*.class

# generated files
bin/
gen/

# Local configuration file (sdk path, etc)
local.properties


#Eclipse
*.pydevproject
.project
.metadata
bin/**
tmp/**
tmp/**/*
*.tmp
*.bak
*.swp
*~.nib
local.properties
.classpath
.settings/
.loadpath
YourProjetcName/.gradle/
YourProjetcName/app/build/
*/YourProjetcName/.gradle/
*/YourProjetcName/app/build/

# External tool builders
.externalToolBuilders/

# Locally stored "Eclipse launch configurations"
*.launch

# CDT-specific
.cproject

# PDT-specific
.buildpath

# Proguard folder generated by Eclipse
proguard/

# Intellij project files
*.iml
*.ipr
*.iws
.idea/
/build
build/
*/build/
*/*/build/
*/*/*/build/
*.bin
*.lock
YourProjetcName/app/build/
.gradle
/local.properties
/.idea/workspace.xml
/.idea/libraries
.DS_Store
.gradle/
app/build/
*app/build/

# Local configuration file (sdk path, etc)
local.properties
/YourProjetcName/build/intermediates/lint-cache/api-versions-6-23.1.bin
appcompat_v7_23_1_1.xml
projectFilesBackup
build.gradle
YourProjetcName.iml
YourProjetcName.iml
gradlew
gradlew.bat
local.properties
settings.gradle
.gradle
.idea
android
build
gradle

언급URL : https://stackoverflow.com/questions/8527597/how-do-i-ignore-files-in-a-directory-in-git

반응형