2011-11-06 4 views
50

이미 여러 가지 질문이 있지만 비슷한 대답이 없습니다. 실제로 내 모든 "논리"에 대한 자식 저장소를 만들고 있어요 -.gitignore 모든 파일을 무시한 다음 재귀 적으로 허용 * .foo

나는 사람이이 정당화 될 수있는 방법을 궁금해하는 경우

(.foo *와 파일을 제외하고 내 저장소 아래의 폴더에있는 모든 것을 무시해야 프로젝트 - 맥에서 음악 소프트웨어 - 그러나 나는 단지 실제 프로젝트 파일 * .logic을 저장하고 싶다)

나는 우리가 모두 같은 판 위에 서있다.

설정 :

mkdir temp 
cd temp 
mkdir testdir 
cd testdir 
touch include.foo 
touch dontinclude.bad 
cd.. 
git init 
touch .gitignore 

이에 붙여 넣기가

# Ignore all 
/* 

# But not these files... 
!.gitignore 
!*.foo 

자식 상태

그리고 추적되지 않는 유일한을 .gitignore하는 는 여기에 내가 처음부터 시작하는 일이다 파일은 .gitignore

입니다.

'git add'를 입력하면됩니다. - 변경하지 마십시오 .gitignore 만 보이고 제 2 파일은 무시됩니다.

왜이 기능이 작동하지 않고 위의 절차를 어떻게 변경하여 작동하게 할 수 있습니까?

여기 .gitignore 파일을 가져온 것과 매우 유사한 질문이 있습니다. 내가 자식 --version 1.7.7를 사용하고 있습니다 (또한 1.7.3 시도) - .gitignore to ignore all files, then recursively allows files of a certain type

+0

기다려, 당신은'git add .gitignore'와'git commit -m '을 추가 했습니까? – Nic

답변

96

귀하의 문제는 처음에 /* 패턴이 최상위 레벨에있는 모든 파일과 디렉토리 일치된다는 점이다 - 그래서, testdir을 포함하여 testdir 안의 모든 것은 무시됩니다.

이것은 당신이 원하는 것입니다 :이 설정으로 git add .을 수행 할 때

# Ignore everything 
* 
# Don't ignore directories, so we can recurse into them 
!*/ 
# Don't ignore .gitignore and *.foo files 
!.gitignore 
!*.foo 

, 당신은 당신이 변경이 커밋 할로 나열에만 .gitignore*.foo 파일을 찾아야한다.

+0

비록 제 논리로 .logic 파일을 가진 제 현실 세계 버전에서는 신비하게 작동하지 않습니다. 나는 git repo를 다시 만들었고, 백만 번 확인하고, .gitignore를 정확히 복사했고, .logic으로 변경하고, 찾는다. -name "* .logic"은 파일의 힙을 반환하지만 .gitignore는 모든 * .logic 파일을 무시합니다 ... 바보 같은 일이 반드시 진행되고 있습니다 ... 마침내 크랙을 만들었을 때 후속 조치가 필요합니다. – PandaWood

+0

@PandaWood : 확인하십시오. '~ .logic' 파일을 제외시킬 패턴을 가진 파일을 가리키는'~/.gitconfig'에'core.excludesfile'을 설정하지 않았습니다. – camh

+0

나는 이것을 얻지 못했지만 요일에 Dropbox에 .logic 파일을 업로드하려고 시도했을 때 힌트를 얻었지만 실패했습니다. 또 다른 힌트는, 몇 가지 텍스트 파일을 가지고 있기 때문에 .tit를 .gitignore에 추가했는데, 그들은 추적 목록에 나타났습니다. 걱정하지 않아도됩니다. 따라서 Logic "파일"(예 : bla.logic)은 실제로 "패키지"입니다. Mac Finder에서 클릭하고 "패키지 내용보기"를 선택하면 * .logic이 작동하지 않습니다 ...어떻게하면이 "파일"을 git에 저장할 수 있을지, 내 다음 질문 일 수 있습니다 .-) – PandaWood

관련 문제