자식에 폴더를 추가 할 수 없습니다


21

새 폴더를 추가하고 (실제로 다른 리포지토리에서 복제 한 후 잊어 버렸습니다) 변경을했습니다. 또한 git add를 시도했을 때 다른 곳에서 많은 변경을했습니다.

# Changes not staged for commit:
#   (use "git add <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#   (commit or discard the untracked or modified content in submodules)
#
#   modified:   protected/ext/SpecificFolder (modified content)
#

그런 다음 .git 폴더가 있었음을 기억합니다 (이전에는 git clone했기 때문에). 나는 그 폴더로 가서 필요없는 파일 (폴더)과 .git 폴더도 제거했습니다. 나는 자식 상태를 점검했다. 이상한 것은 없다. 그런 다음 다른 지점으로 커밋하고 체크 아웃하고 갑자기이 폴더가 마지막 커밋에 추가되지 않았 음을 알았습니다. 실제로 폴더가 추가되었지만 내부 파일은 무시되었습니다. 이제 git add해당 폴더 를 수행하려고 할 때 아무 일도 일어나지 git status않으며 변경 사항이 표시되지 않습니다.

어떡해 ?


6
다른 사람 이이 페이지에서 내가 직면 한 문제로 끝나는 경우 하위 폴더의 파일을 Git에 추가 할 수 없었습니다. 나중에 하위 폴더에 자체 .git리포지토리가 있고 기본 폴더의 리포지토리 대신 해당 리포지토리에 파일이 추가되고 있음을 알았습니다 . Git GUI에서도 하위 폴더는 폴더 대신 파일로 나타납니다.
Nav

답변:


29

힘내 디렉토리를 추적하지 않습니다; 그 안에있는 파일들만

add아무것도하지 않는 무시 패턴이 있는 것 같습니다. git status --ignored;로 무시 된 파일을 볼 수 있습니다 ; 그들은 다음과 추적 할 수 있습니다git add --force protected/ext/SpecificFolder


1
아니에요, 그것은 git status --ignored어떻게 든 그것이 하위 모듈과 연결되어 있다고 생각합니다
user1016265

1
이 명령은 생명의 은인이었습니다. 그것 없이는 어느 디렉토리가 무시되었는지 결코 알 수 없었습니다.
IgorGanapolsky 2016 년

와우 ..... 지금 당장 git을 사용한
후이

1
아하, 드디어 이것은 내 문제였다. 부모와 하위 모듈에서 .gitignore를 복사했습니다. 'config /'를 무시하고 나중에 소스 디렉토리 아래에 config라는 디렉토리를 만들었습니다. cource를 추가 할 수 없습니다. 문제가 해결되었습니다. 감사합니다 :-)
Avec

7

Git은 EMPTY 디렉토리를 추적하지 않습니다. 하위 디렉토리의 여러 레이어가있는 프로젝트가있는 경우 git은 실제로 파일이있는 디렉토리를 추적합니다. 그렇지 않은 경우 파일의 하나의 플랫 리포지토리가됩니다.


와우 이건 그렇게 간단하지만 망할. 나는 이것을 읽고 "오 나의 신 이시여"갔다
Brian은 Reinstate Monica가

3

이 사용자가 한 일을 정확히 수행했습니다. 기존 git 저장소를 다른 저장소에 추가하십시오.

증상은 git이 해당 디렉토리를 파일로 인식하여 디렉토리 파일을 추가 할 수 없다는 것입니다.

이 질문을 해결하기 위해 .git폴더 의 폴더를 삭제하고 해당 폴더를 다른 디렉토리로 이동하고 색인을 지우고 리포지토리의 디렉토리를 제거한 다음 디렉토리를 올바르게 추가 할 수있었습니다.

이것의 교훈은 : 다른 저장소 안에 저장소를 추가하지 마십시오.


5
또한 실행중인 해결할 수 있습니다git rm --cached path_to_submodule
빅터 Marchuk을


0

해당 디렉토리에 파일을 추가하십시오.

$ git add my-dir/index.html

아래와 같은 출력이 보이면 :

The following paths are ignored by one of your .gitignore files:
my-dir/index.html
Use -f if you really want to add them.
fatal: no files added

gitignores 중 하나에 해당 디렉토리를 추가하지 못하게하는 규칙이 있습니다.


0

하위 모듈이었던 것을 일반 하위 폴더로 변환하려고 시도한 후에 비슷한 부작용이 발견되었습니다.

변환하려고했던 폴더를 다시 추가하면 작동하는 것처럼 보였지만 실제로 파일이 추가되지 않은 것으로 나타났습니다.

그 안에 파일을 구체적으로 추가하려고하면 더 나은 경고가 나옵니다.

git add sites/all/modules/contrib/transclusion/transclusion.module 
fatal: Pathspec 'sites/all/modules/contrib/transclusion/transclusion.module' is in submodule 'sites/all/modules/contrib/transclusion'
  • 제대로 된 문서화 프로세스가 없기 때문에 이전 하위 모듈을 수동으로 제거하려고 시도한 방식과 관련이 있습니다. -방금 .gitmodules에서 삭제했습니다. 실제로 서브 모듈의 그림자를 없애기 위해 다른 것들이 필요했습니다.
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.