Uma solução alternativa seria fazer com que / srv / www / projectfiles fosse um link simbólico para / home / me / code / project / estático, assim o git não vê nenhum link simbólico
Eu tenho duas pastas:
/home/me/code/project/
/srv/www/projectfiles/
Na pasta /home/me/code/project
, eu fiz o link simbólico static
para /srv/www/projectfiles/
i.e. /home/me/code/project/static/
- > /srv/www/projectfiles/
Quando tento me comprometer agora, ele não vê nenhum dos arquivos por trás do symlink e, em vez disso, tenta confirmar o próprio link simbólico como um arquivo.
Como faço para confirmar um arquivo (por exemplo, /srv/www/projectfiles/style.css
) s que está por trás do link simbólico?
Mova os arquivos para a pasta e remova o link simbólico. O Git não percorre links simbólicos.
Ele (e eu) assumiríamos que você está criando links simbólicos para um conjunto de arquivos que você não controla ou que não deseja modificar, portanto, eles não precisam ser versionados.
Considere o uso de um ponto de montagem para montar a pasta de destino (a qual você irá ligar simbolicamente no momento) para aparecer no local desejado sob o projeto git. Eu usei essa abordagem com sucesso.
Outra solução alternativa - a única que eu encontrei que funciona também para diretórios - é alterar a árvore de trabalho do git para as ações específicas.
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/
Se você estiver usando o linux, eu particularmente gosto da solução fornecida por GitBLSR . É uma biblioteca que é carregada via LD_PRELOAD que transparentemente desreferencia links simbólicos para arquivos e pastas fora de um repositório.
Para instalá-lo para uma conta de usuário local é simples:
git clone https://github.com/Alcaro/GitBSLR.git
cd GitBSLR
./install.sh
Isso compilará a biblioteca e criará um alias como o seguinte em ~/.bashrc
:
alias git="LD_PRELOAD=/path/to/gitbslr.so git"
O uso desse alias habilita a desreferência de links transparentes.
Tags symbolic-link git