2017-03-07 1 views
3

여러 수준의 여러 README 파일이있는 완전한 디렉토리 구조가 있습니다. 예를 들어 :부가 기능. 무시되는 경우에도 .git 폴더가있는 하위 디렉토리에서 오류가 발생합니다.

gitignoretest/ 
|-- 00README 
|-- dir1 
| |-- 00README 
| |-- dir1 
| | |-- 00README 
| | |-- dir1 
| | |-- dir2 
| | |-- dir3 
| | |-- file1 
| | `-- file2 
| |-- dir2 
| | |-- 00README 
| | |-- dir1 
| | |-- dir2 
| | |-- dir3 
| | |-- file1 
| | `-- file2 
| |-- dir3 
| | |-- 00README 
| | |-- dir1 
| | |-- dir2 
| | |-- dir3 
| | |-- file1 
| | `-- file2 
| |-- file1 
| `-- file2 
|-- dir3 
| |-- 00README 
| |-- dir1 
| | |-- 00README 
| | |-- dir1 
| | | |-- 00README 
| | | |-- dir1 
| | | |-- dir2 
| | | |-- dir3 
| | | |-- file1 
| | | `-- file2 
| | |-- dir2 
| | | |-- 00README 
| | | |-- dir1 
| | | |-- dir2 
| | | |-- dir3 
| | | |-- file1 
| | | `-- file2 

... 
... 

우리는 버전으로 00README 파일을합니다. 우리는 성공적으로 실제 시나리오에서, this 그러나

# Ignore everything 
* 

# But not these files... 
!.gitignore 
!00README 
# etc... 

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

.gitignore

.gitignore

으로이 테스트를, 하위 디렉토리 중 하나가 자신의 .git 디렉토리를 포함하는 일부 패키지가있는 conda 설치입니다. 내가 git add .을 할 때이 메시지와 함께 실패합니다

fatal: Not a git repository: Applications/conda/lib/STAR-Fusion/STAR-Fusion.wiki/../.git/modules/STAR-Fusion.wiki 

실제 시나리오는 ../TopLevel/.gitignore../TopLevel/Applications/...입니다. 여기에 내가 시도한 작업은 다음과 같습니다

../TopLevel/.gitignore

# Ignore everything 
* 
/Applications/conda/**/* 
/Applications/miniconda3/**/* 
/Applications/newconda/**/* 

Applications/conda/**/* 
Applications/miniconda3/**/* 
Applications/newconda/**/* 

/**/.git 
**/.git 

/**/.git/** 
**/.git/** 

# But not these files... 
!.gitignore 
!00README.md 
!USE_APPS 
# etc... 

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

그러나 마크를 타격하지 않음.


편집이 @VonC에서 언급 한 바와 같이 .git 폴더와 "untracking"하위 디렉토리의 문제를 해결하기 위해, 나는 자식 저장소의 완전히 새로운 창조를 제시한다. 참고 : 리모컨으로 추가되는 저장소는 새롭게 작성된 --bare 저장소입니다. 당신은 하나 개의 저장소로 모든 트리 구조를 고려할 경우

[email protected]:/home/.../TopLevel$ rmdir .git 
[email protected]:/home/.../TopLevel$ git init 
Initialized empty Git repository in /home/.../TopLevel/.git/ 
[email protected]:/home/.../TopLevel$ git remote add origin [email protected]:path/repo.git 
[email protected]:/home/.../TopLevel$ git status 
# On branch master 
# 
# Initial commit 
# 
# Untracked files: 
# (use "git add <file>..." to include in what will be committed) 
# 
# .gitignore 
# 00README.md 
# Applications/ 
# InstallationPackages/ 
# USE_APPS 
# gitignoretest/ 
nothing added to commit but untracked files present (use "git add" to track) 
[email protected]:/home/.../TopLevel$ git add . 
fatal: Not a git repository: Applications/conda/lib/STAR-Fusion/STAR-Fusion.wiki/../.git/modules/STAR-Fusion.wiki 
+0

'git add .' 대신'git add --all'을 시도 했습니까? 후자는 첫 번째 커밋에만 해당됩니다. 맞습니까? – mickdev

+0

글쎄, 그건 첫 번째 커밋이었다 :)하지만 나는'git add --all'을 시도하고 같은 에러가 발생했다 : ( – abalter

+0

나는 ...'rm -fr .git'으로 구성된 자식을 모두 제거하려 했습니까? 그리고'git init'을 다시 실행 한 후'git ​​add .'? – mickdev

답변

1

, 먼저 중첩 된 .git 하위 폴더를 제거해야합니다 : "Initial push to GitHub Missing Sub Directory"을 참조하십시오. 당신은 폴더를 제외 fisrt해야합니다, 당신은 OOREMEADE 파일하지만, 모든 것을 무시하려는 경우이 규칙을 무시과 관련

* 
!**/ 

그런 다음 파일을 제외 할 수 있습니다

!00README 

확실히 그 확인 파일이 처음에는 추적되지 않음 (git status)

응용 프로그램 디렉토리에는 git 저장소를 복제하여 많은 패키지를 설치하는 것처럼 보이는 설치. 내가 가서 모든 .git 디렉토리를 삭제하면 conda update를 실행할 때마다 더 이상 필요한 repos가 없기 때문에 실패합니다. 그렇지 않으면 다시 복제됩니다.

먼저 .git 폴더를 무시하지 마십시오. 상위 폴더는 중첩 된 git repo를 나타냅니다.즉, CONDA 중첩 REPO가 submodules을 가지고 의미, 그 방법은 git add .는 "Not a git repository: .../../.git/modules/..."는 gitlink (special entry in index of the parent repo)

두 번째를 기록하지 않습니다 당신이 무시 할 폴더합니다 (.git 폴더의 부모)이다 , 누구의 support is still in progress with conda : 해당 콘돔 설치 폴더 git submodule update --init --recursive 적절한 중첩 된 하위 모듈을 초기화해야합니다.

+0

) 두 가지 질문 : 1) 폴더가 없더라도 테스트 디렉토리에서 "작동"했습니다. 2) 내가 이해한다면,'! ** /'는 실제로 파일이 아니라 폴더라는 것을 무시하는 것입니다. 티? – abalter

+0

@abalter 2) 예 : 폴더를 무시하면 해당 하위 폴더의 요소와 관련된 규칙이 전혀 사용되지 않습니다. 1) 질문은 무엇입니까;) – VonC

+0

위의 시도하고 여전히 치명적인 오류가있어 : (1에 관해서) 문제는 테스트 디렉토리 (원래 질문에 표시된 트리)에서 내가 보여준'.gitignore'는 디렉토리를 무시합니다. 그렇다면'.git' 디렉토리가있을 때 왜 실패할까요? 어쩌면 "."로 시작하는 모든 디렉토리를 무시해야합니까? – abalter

관련 문제