2009-09-15 17 views
5

Sto provando a mantenere i miei file statici in un ramo separato in modo che possa impedire loro di unirmi al mio master brach (su Heroku, lo slug dell'applicazione deve rimanere piccolo). Non voglio ignorare i miei file statici, perché voglio tenerli all'interno del mio ramo "devel".File separati in Git

Idealmente mi piacerebbe mantenere test.db vuoto e la mia intera cartella pubblica vuota nel ramo principale.

Quindi, posso creare una "sovrapposizione" su un ramo? Posso impedire l'unione di determinati file/directory nel mio ramo principale?

+0

@ Jonathan: Grazie per il controllo ortografico. – arbales

+0

Nota: questa è una soluzione, ma altri potrebbero proporre altre organizzazioni per ottenere lo stesso risultato. – VonC

+0

Come sospetto. Sarei certamente interessato ad ascoltare altre soluzioni interessanti, anche solo per l'edificazione mia/altrui. – arbales

risposta

8

Si potrebbe definire tali file statici stessi sul branch master, ma:

Da quel .gitattribute non sarebbe definito su altri rami, l'unione di quei file procederebbe normalmente.


L'idea è di definire un file .gitattributes nella directory di quei file statici sul ramo principale con il seguente contenuto:

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

Questi tre file saranno sempre mantenere il loro contenuto locale (che è vuoto sul master) durante l'unione con il master.

È necessario definire un driver di unione (qui denominato "keepmine"). Vedi la domanda collegata per quello script.

+0

Potresti spiegare un po 'più in dettaglio? Non ho usato attributi prima e il collegamento non è al 100% semplice. – arbales

+0

fantastico - grazie per la spiegazione! – arbales

+0

Inoltre, non riesco a definire i caratteri jolly, ho provato public/* merge = keepMine, che non ha funzionato. Ho anche provato a rimuovere la directory e a toccarla, creando un file, ma Git si lamenta e rende un'altra versione di pubblico per l'unione. – arbales

0

Aggiungere i file a .gitignore nel master. Quando esegui il checkout, il comando .gitignore cambierà e non li ignorerà più. (Si noti che se si esegue git clean -x, i file verranno sovrascritti.)

Problemi correlati