두 개의 폴더가 있습니다.
/home/me/code/project/
/srv/www/projectfiles/
에서 /home/me/code/project
폴더, 나는 심볼릭 링크 한 static
에/srv/www/projectfiles/
즉 /home/me/code/project/static/
->/srv/www/projectfiles/
지금 커밋하려고하면 심볼릭 링크 뒤에있는 파일이 표시되지 않고 심볼릭 링크 자체를 파일로 커밋하려고합니다.
/srv/www/projectfiles/style.css
심볼릭 링크 뒤에 있는 파일을 어떻게 커밋 합니까?
답변
해결 방법은 / srv / www / projectfiles를 / home / me / code / project / static에 대한 심볼릭 링크로 설정하여 자식이 심볼 링크를 볼 수 없도록하는 것입니다.
답변
리눅스를 사용한다면, 특히 GitBLSR이 제공하는 솔루션을 좋아합니다 . LD_PRELOAD를 통해로드되는 라이브러리로서 저장소 외부의 파일 및 폴더에 대한 심볼릭 링크를 투명하게 역 참조합니다.
로컬 사용자 계정으로 설치하는 것은 간단합니다.
git clone https://github.com/Alcaro/GitBSLR.git
cd GitBSLR
./install.sh
그러면 라이브러리가 컴파일되고 다음과 같은 별칭이 생성됩니다 ~/.bashrc
.
alias git="LD_PRELOAD=/path/to/gitbslr.so git"
이 별명을 사용하면 투명한 링크 역 참조가 가능합니다.
답변
마운트 포인트를 사용하여 대상 폴더 (현재 symlink)를 마운트하여 git 프로젝트 아래의 원하는 위치에 표시하는 것을 고려하십시오. 이 방법을 성공적으로 사용했습니다.
답변
파일을 폴더로 이동하고 심볼릭 링크를 제거하십시오. 힘내는 심볼릭 링크를 통과하지 않습니다.
그것은 (그리고 나는) 당신이 제어하지 않거나 수정하고 싶지 않은 파일 세트에 심볼 링크되어 있다고 가정합니다.
답변
또 다른 해결 방법-내가 디렉토리에서 작동하는 유일한 방법은 특정 작업에 대한 자식 작업 트리를 변경하는 것입니다.
git --work-tree=/home/me/code/project/ add /home/me/code/project/static/
git --work-tree=/home/me/code/project/ commit /home/me/code/project/static/