2014-01-25 5 views
0

편집 : 아래 단계를 수행하면 실제로 문제가 재현됩니다. 예, 파일의 이름은 stuff.txt이며 파일 이름에 .으로 시작하지 않습니다. echo *을 입력하면 실제로 stuff.txt이 인쇄됩니다."git add *"가 루트 디렉토리에 파일을 추가하지 않는 이유는 무엇입니까?

git add * 명령은 일반적으로 git add .과 비슷하지만 하나의 큰 예외가 있습니다. git add *은 Git 저장소의 루트 디렉토리에 파일을 추가하지 않습니다. 새 파일 (??) 또는 수정 된 기존 파일 (M)을 추가하지 않습니다. 재현하는 데 필요한 단계는 다음과 같습니다.

mac$ mkdir myrepo 
mac$ cd myrepo 
mac$ git init 
mac$ touch stuff.txt 
mac$ git add * 
fatal: no files added 

mac$ git status -s 
?? stuff.txt 
# It looks like 'git add *' totally dropped the ball. 

mac$ git add . 
# Nothing prints. Success? 
mac$ git status -s 
A stuff.txt 
# Yes, success. 

어떤 문제가 있습니까? git add *은 추가 또는 수정 된 파일이 myrepo/mydir/과 같은 하위 디렉토리에있는 한 올바르게 작동합니다. 이 문제점은 저장소의 최상위 레벨에있는 파일에서만 발생합니다.

내 설정 :
맥 OS X 10.9.1 매버릭스
힘내 버전 1.8.3.4 (애플 힘내-47)
내가 애플 엑스 코드를 설치하여 망할 놈의 버전을 얻었다.
애플 터미널 버전 2.4 (326)

나는 분명히 호기심을 묻고있다. git add .을 사용하면 100 % 만족스러운 해결 방법입니다.

+0

그것은 기괴합니다. '*'는 Git과 관련이 없으며, 쉘에 의해 확장되어야합니다. –

+2

파일은 실제로'stuff.txt'라고 불리우며 그 이름이'.'로 시작합니까? – Mat

+0

가능한 중복 파일 [gitignore - 치명적인 : 파일 없음] (http://stackoverflow.com/questions/12084227/gitignore-fatal-no-files-added) –

답변

1

Mat의 설명에 의해 암시 된 것처럼 *.으로 시작하는 것과 일치하지 않습니다. 이것은 쉘이 작동하는 방식이며 git과 관련이 없습니다. 쉘에서 echo *을 실행하여이를 테스트 할 수 있습니다.

도트 파일과 일치 시키려면 .[!.]*을 사용해야합니다. (echo .[!.]*을 사용하여 테스트하십시오.) .*을 사용하면 git add으로하고 싶지 않은 ...도 일치합니다.

관련 문제