Mam dwa foldery:
/home/me/code/project/
/srv/www/projectfiles/
W /home/me/code/project
folderze, mam dowiązane static
do/srv/www/projectfiles/
tj. /home/me/code/project/static/
->/srv/www/projectfiles/
Kiedy próbuję zatwierdzić teraz, nie widzi on żadnych plików za dowiązaniem symbolicznym, a zamiast tego próbuje zatwierdzić samo dowiązanie symboliczne jako plik.
Jak zatwierdzić plik (np. /srv/www/projectfiles/style.css
), Który znajduje się za dowiązaniem symbolicznym?
git
symbolic-link
Macha
źródło
źródło
Jeśli używasz Linuksa, szczególnie podoba mi się rozwiązanie dostarczone przez GitBLSR . Jest to biblioteka ładowana przez LD_PRELOAD, która w przejrzysty sposób usuwa dowiązania symboliczne do plików i folderów poza repozytorium.
Aby zainstalować go dla lokalnego konta użytkownika, jest proste:
Spowoduje to skompilowanie biblioteki i utworzenie aliasu, takiego jak poniżej
~/.bashrc
:Użycie tego aliasu umożliwia transparentne odsyłanie linków.
źródło
Rozważ użycie punktu montowania, aby zamontować folder docelowy (do którego obecnie łączysz symbolicznie), aby pojawił się w miejscu, w którym chcesz go umieścić pod projektem git. Z powodzeniem zastosowałem to podejście.
źródło
Przenieś pliki do folderu i usuń dowiązanie symboliczne. Git nie przechodzi przez dowiązania symboliczne.
Zakładam (i ja), że tworzysz dowiązanie symboliczne do zestawu plików, których albo nie kontrolujesz, albo nie chcesz modyfikować, ponieważ nie wymagają one wersji.
źródło
Innym obejściem - jedynym, które znalazłem, które działa również dla katalogów - jest zmiana drzewa roboczego git dla określonych akcji.
źródło