2009-09-15 18 views
5

Ich versuche, meine statischen Dateien in einem separaten Zweig zu halten, damit ich sie aus der Verschmelzung in meinen Master Brach halten kann (auf Heroku, Slug Ihrer Anwendung muss klein bleiben). Ich möchte meine statischen Dateien nicht ignorieren, weil ich sie in meinem Zweig "devel" behalten möchte.Separate Dateien in Git

Idealerweise möchte ich test.db leer lassen und meinen gesamten Öffentlichen Ordner im Master-Zweig leer lassen.

Also, kann ich eine "Überlagerung" auf einem Zweig erstellen? Kann ich verhindern, dass bestimmte Dateien/Verzeichnisse in meinen Master-Zweig eingebunden werden?

+0

@ Jonathan: Danke für die Rechtschreibprüfung. – arbales

+0

Hinweis: Dies ist eine Lösung, aber andere können eine andere Organisation vorschlagen, um dasselbe Ergebnis zu erzielen. – VonC

+0

Wie ich vermuten würde. Ich wäre sicherlich daran interessiert, andere interessante Lösungen zu hören, auch nur für die eigene Erbauung. – arbales

Antwort

8

Sie könnten die gleichen statischen Dateien auf Ihrem Master-Zweig definieren, aber:

Da die Verschmelzung .gitattribute wäre in anderen Zweigen nicht definiert, die Zusammenführung dieser Dateien würde normal verlaufen.


Die Idee ist es, eine .gitattributes Datei im Verzeichnis dieser statischen Dateien auf dem Master-Zweig mit folgendem Inhalt zu definieren:

myStaticFile1 merge=keepMine 
myStaticFile2 merge=keepMine 
myStaticFile3 merge=keepMine 

Diese drei Dateien werden immer ihre lokalen Inhalte halten (die ist leer auf Master) beim Zusammenführen zum Master.

Sie müssen einen Zusammenführungstreiber definieren (hier "keepmine" genannt). Siehe die verknüpfte Frage für dieses Skript.

+0

Könnten Sie das etwas genauer erklären? Ich habe keine Attribute zuvor verwendet und die Verbindung ist nicht 100% einfach. – arbales

+0

genial - danke für die Erklärung! – arbales

+0

Auch ich kann nicht in der Lage sein, Wildcards zu definieren, ich versuchte öffentlich/* merge = keepMine, die nicht funktionierte. Ich habe auch versucht, das Verzeichnis zu entfernen und es zu berühren, eine Datei zu machen, aber Git beschwert sich und macht eine andere Version von public beim Zusammenführen. – arbales

0

Fügen Sie die Dateien zu .gitignore im Master hinzu. Wenn Sie devel auschecken, ändert sich .gitignore und ignoriert sie nicht mehr. (Beachten Sie, dass beim Ausführen von git clean -x die Dateien überschrieben werden.)

Verwandte Themen