2010-08-18 3 views
10

심볼릭 링크를 무시하도록 Git에 지시 할 수 있습니까? 저는 혼합 Linux/Windows 환경에서 작업하고 있습니다. 아시다시피, 심볼릭 링크는이 둘 사이에서 매우 다르게 처리됩니다..gitignore의 심볼릭 링크를 무시하십시오.

+3

정확히 무시할 것입니까? .gitignore에 원하는 경우 symlink를 추가하기 만하면됩니다. –

+0

네,하지만 파일 이름을 추가하면 심볼릭 링크 된 파일도 무시됩니다 ... 전체 경로를 지정할 수는 있겠지만. 내가 설정 파일에 붙어있을 수있는 뭔가를 기대했다 ... – Andrei

+3

최선의 방법은'find * -type l '로 목록을 생성하는 것일 수도있다. – Cascabel

답변

1

사용 자식 버전> = 1.6

힘내 일반 파일과 같은 심볼릭 링크를 치료하는 데 사용하지만, 새로운 자식 버전 (> = 1.6) 파일이 심볼릭 링크를 넘어 있는지 확인하고 발생합니다 치명적인 오류.

는 예컨대 :

# git init 
# mkdir newdir 
# touch newdir/foo 
# git add newdir/foo 
# git commit -m 'add foo' 
# mv newdir /tmp/ 
# ln -s /tmp/newdir 
# touch newdir/bar 
# git add newdir/bar 
fatal: 'newdir/bar' is beyond a symbolic link 

# git add/tmp/newdir 
fatal: '/tmp/newdir' is outside repository 

# git --version 
git version 1.7.3.4 
+2

git 1.7.9.5는 저장소 외부의 내용을 가리킬 때에도 symlink를 추가합니다 ... – Izkata

1

는 아니, 전 세계적으로이 작업을 수행 할 수 없습니다. 그러나 심볼릭 링크가 많이있는 경우에는 repo의 .gitignore 파일에 쉽게 추가 할 수있는 bash 스크립트가 있습니다.

for f in $(git status --porcelain | grep '^??' | sed 's/^?? //'); do 
    test -L "$f" && echo $f >> .gitignore; # add symlinks 
    test -d "$f" && echo $f\* >> .gitignore; # add new directories as well 
done 
+0

굉장한 솔루션! 아주 잘 작동합니다 :) 대단히 감사합니다! –