2013-06-26 3 views
0

그래서 자식 저장소가 있습니다. Cygwin/Windows 8에서 실행중인 git 1.7.9를 사용하고 있습니다.git clean을 사용하면 변경된 것으로 감지되는 파일을 삭제 했습니까?

이 자식 저장소는 특정 디렉토리의 일부 하위 디렉토리는 추적되지만 실제로는 포함 된 하위 디렉토리는 추적하지 않는 이상한 동작을합니다.

그래서,이 같은 불확실성을 얻을 :

$ git reset --hard 
$ git status 
#untracked files 
foo 
$ git clean -fd 
removing foo 
$ git status 
#changes not staged 
D foo/bar/whatever.txt 

하지만를 한 후, 파일을 다른 방법으로 가서 추가 :

$ git add foo 
$ git status 
# changes not staged 
A foo/bar/whatever.txt 

그리고 내가 거기에서 커밋하는 경우, 그것은 물론 것이다 밀어 붙이려고 할 때 미친 갈등을 피하십시오.

경우에 따라 git reset --hard으로 수정되지만 때로는 그렇지 않습니다. 나는 그것을 제거하는 가장 좋은 방법은 새로운 브랜치를 체크 아웃하는 것, 내 작업 카피의 모든 것을 삭제하고 git reset --hard을 실행하는 것입니다.

다른 누구도이 이상한 행동을 경험하지 않았습니까? 나는 git-tfs를 사용하고 있는데, 이는 이것이 버그라는 것을 의미 할 수도 있지만, 대부분은 일반적인 자식 저장소이기 때문에 중요하지 않다고 생각한다.

+2

'.gitignore' (그리고'foo/.gitignore'와'foo/bar/.gitignore')에있는 내용은 무엇입니까? 또한,'git ls-tree -r HEAD-foo'는 추적중인'foo'에있는 파일에 대해 무엇을 말합니까? 디렉토리 대신'foo' 또는'bar' 심볼릭 링크입니까? – twalberg

+0

아마도 .gitattributes 끝 줄에 문제가 있습니까? git-tfs가 작업 영역 폴더를 만지지 않기 때문에 (특히 호출하지 않을 때 특히 그렇습니다)) – Philippe

+0

btw git 1.8으로 업그레이드를 시도 했습니까? –

답변

0

git clean -fd은 내가 가정하고있는 .gitignore의 항목 중 하나와 일치하는 파일을 건너 뜁니다. 따라서 어떤 .gitignore에 일치하는 정규 표현식이 foo/bar/whatever.txt인지 확인하십시오.

더 많은 경우에는 foo/bar/whatever.txt이 잠겨 있지 않아서 청소를 방해 할 수 있습니다.