Ich habe zwei Ordner:
/home/me/code/project/
/srv/www/projectfiles/
In dem /home/me/code/project
Ordner habe ich einen Link static
zu/srv/www/projectfiles/
dh /home/me/code/project/static/
->/srv/www/projectfiles/
Wenn ich jetzt versuche, einen Commit durchzuführen, werden hinter dem Symlink keine Dateien angezeigt. Stattdessen wird versucht, den Symlink selbst als Datei festzuschreiben.
Wie lege ich eine Datei fest /srv/www/projectfiles/style.css
, die sich hinter dem Symlink befindet?
git
symbolic-link
Macha
quelle
quelle
Wenn Sie Linux verwenden, gefällt mir besonders die Lösung von GitBLSR . Es ist eine Bibliothek, die über LD_PRELOAD geladen wird und Symlinks zu Dateien und Ordnern außerhalb eines Repositorys transparent dereferenziert.
Die Installation für ein lokales Benutzerkonto ist einfach:
Dadurch wird die Bibliothek kompiliert und ein Alias wie das folgende in erstellt
~/.bashrc
:Die Verwendung dieses Alias ermöglicht die transparente Link-Dereferenzierung.
quelle
Verwenden Sie einen Bereitstellungspunkt, um den Zielordner (mit dem Sie gegenwärtig einen Symlink erstellen) an dem Ort bereitzustellen, an dem er unter dem Git-Projekt angezeigt werden soll. Ich habe diesen Ansatz erfolgreich angewendet.
quelle
Verschieben Sie die Dateien in den Ordner und entfernen Sie den Symlink. Git überquert keine Symlinks.
Es wird (und ich) davon ausgegangen, dass Sie einen Link zu einer Reihe von Dateien erstellen, die Sie entweder nicht steuern oder nicht ändern möchten, da sie nicht versioniert werden müssen.
quelle
Eine andere Problemumgehung - die einzige, die ich gefunden habe und die auch für Verzeichnisse funktioniert - besteht darin, den Git-Arbeitsbaum für die spezifischen Aktionen zu ändern.
quelle