.gitignore를 사용하여 특정 디렉토리를 제외한 모든 것을 무시 내 폴더 의 내용 만 선택적으로

내 문제는 내 자식 저장소에 WordPress 웹 사이트가 많이 있다는 것입니다.이 웹 사이트는 WordPress에 themes있는 나머지 중복 파일을 무시하면서 내 폴더 의 내용 만 선택적으로 커밋하려고합니다 .

이전에 .gitignore 파일을 사용하여 파일 형식을 무시했지만 다른 방법으로 사용할 수 있습니다. 즉 특정 폴더 경로를 무시하는 것입니까?

루트 (git repo)
-/ wordpress
–/ (WordPress Site 1) / wp-content / themes
–/ (WordPress Site 2) / wp-content / themes
–/ (WordPress Site 3) / wp-content / themes

감사-

최신 정보:

답변을 바탕으로 다음을 수행했지만 작동하지 않습니다. 어떤 아이디어?

# Ignore everything:
*
# Except for wordpress themes:
!*/wp-content/themes/*

또한 다음 변형을 시도했습니다.

!*/wp-content/themes*
!*wp-content/themes/*
!wp-content/themes/*
!/wordpress/*/wp-content/themes*
!wordpress/*/wp-content/themes*

이 중 어느 것도 내 themes폴더를 읽지 않습니다 .



답변

내가 한 방법은 다음과 같습니다. 본질적으로 길을 걸어야하며 어떤 방향 으로든 여러 수준을 와일드 카드로 만들 수 없습니다.

# Ignore everything:
*

# Except for the themes directories:

!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 개의 테마 아래에있는 경우에도 여전히이를 설명해야합니다.

이것이 나를 위해 일한 방법입니다. 누군가가 더 많은 정보에 대해 설명을 제공하려는 경우.

또한, 이러한 답변이 도움이되었습니다.
어떻게 부정 패턴 작업 gitignore
어떻게 수행 gitignore 제외 규칙 실제로 작동


참고 : 나는 두 번 와일드 카드 ‘globs의’를 사용하지만 따라하려고 기능을 의존하는 시스템이 있고 내 Mac에서 일을하지 않았다 :

작동하지 않았다:

!**/wp-content/themes/
!**/wp-content/themes/**

답변

위의 방법을 시도했지만 제대로 작동하지 않았습니다. 더 좋은 방법은 다음과 같습니다. https://gist.github.com/444295

# This is a template .gitignore file for git-managed WordPress projects.
#
# Fact: you don't want WordPress core files, or your server-specific
# configuration files etc., in your project's repository. You just don't.
#
# Solution: stick this file up your repository root (which it assumes is
# also the WordPress root directory) and add exceptions for any plugins,
# themes, and other directories that should be under version control.
#
# See the comments below for more info on how to add exceptions for your
# content. Or see git's documentation for more info on .gitignore files:
# http://kernel.org/pub/software/scm/git/docs/gitignore.html

# Ignore everything in the root except the "wp-content" directory.
/*
!.gitignore
!wp-content/

# Ignore everything in the "wp-content" directory, except the "plugins"
# and "themes" directories.
wp-content/*
!wp-content/plugins/
!wp-content/themes/

# Ignore everything in the "plugins" directory, except the plugins you
# specify (see the commented-out examples for hints on how to do this.)
wp-content/plugins/*
# !wp-content/plugins/my-single-file-plugin.php
# !wp-content/plugins/my-directory-plugin/

# Ignore everything in the "themes" directory, except the themes you
# specify (see the commented-out example for a hint on how to do this.)
wp-content/themes/*
# !wp-content/themes/my-theme/

답변

첫 번째 줄을 수정

*

로 변경

/*

답변

다음 답변을 시도하십시오.

.gitignore가 몇 개의 파일을 제외한 모든 것을 무시하게하십시오.

# Ignore everything
*

# But not these files...
!.gitignore
!script.pl
!template.latex
# etc...

# ...even if they are in subdirectories
!*/

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

루트 파일과 루트 디렉토리를 무시한 다음 루트 bin 디렉토리를 무시합니다.

/*
/*/
!/bin/

이 방법으로 하위 디렉토리와 파일을 포함한 모든 bin 디렉토리를 얻을 수 있습니다.


답변

패턴 앞에 느낌표 ( !)를 붙이면 패턴을 제외한 이전 패턴은 무시됩니다. 따라서 모든 것을 무시한 다음이 패턴을 사용하여 원하는 것을 허용 할 수 있습니다.


답변

하위 디렉토리가있는 하나의 폴더는 제외하고 모든 것을 무시해야했습니다.

나를 위해, 이것은 작동합니다

# Ignore everything
/*

# Not these directories
!folder/

# Not these files
!.gitignore
!.env
!file.txt

답변

다음과 같은 디렉토리 구조가 있다고 가정하십시오.

– sites
– -all
– – – -files
– – – – – -private
– – – – – – – -newspilot
– -default
– – – -files
– – – – – -private
– – – – – – – -newspilot

당신이하려는 경우 에만 사이트 / 모든 / 파일 / / 개인의 newspilot을 허용 하고 사이트 / 기본 / 파일 / / 개인의 newspilot을 , 당신은 처음에이를 시도 할 수 있습니다 :

sites/*/files/*
!sites/*/files/private/newspilot

이건 잘못이야! gitignore의 까다로운 점은 은 하위 디렉토리 ( “newspilot”)를 커밋에 포함하기 전에 먼저 상위 ( “private”) 디렉토리를 포함 시켜야한다는 것입니다.

sites/*/files/*
!sites/*/files/private
sites/*/files/private/*
!sites/*/files/private/newspilot

http://www.christianengvall.se/gitignore-exclude-folder-but-include-a-subfolder/