2009-09-15 8 views
5

Staram się zachować pliki statyczne w oddzielnym oddziale, dzięki czemu mogę zapobiec ich scalaniu się z moim głównym brach (na Heroku twoja aplikacja musi pozostać mała). Nie chcę ignorować moich statycznych plików, ponieważ chcę je przechowywać w mojej gałęzi "devel".Oddzielne pliki w Git

Idealnie chciałbym pozostawić puste pole test.db i cały mój folder publiczny w gałęzi głównej.

Czy mogę utworzyć "nakładkę" na oddział? Czy mogę zapobiec scaleniu pewnych plików/katalogów w moją gałąź główną?

+0

@ Jonathan: Dzięki za sprawdzanie pisowni. – arbales

+0

Uwaga: jest to jedno rozwiązanie, ale inni mogą zaproponować inną organizację, aby osiągnąć ten sam wynik. – VonC

+0

Jak podejrzewam. Z pewnością byłbym zainteresowany słuchaniem innych ciekawych rozwiązań, nawet dla własnego/cudzego budowania. – arbales

Odpowiedz

8

Można określić te same pliki statyczne na gałęzi master ale:

Od tego .gitattribute nie zostałby zdefiniowany w innych gałęziach, scalenie tych plików przebiegałoby normalnie.


Chodzi o to, aby określić plik .gitattributes w katalogu tych plików statycznych na gałęzi master o następującej treści:

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

Te trzy pliki będą zawsze zachować ich lokalną treścią (które jest pusty w master) podczas łączenia z masterem.

Będziesz musiał zdefiniować sterownik scalający (tutaj nazywany "strzeżonym"). Zobacz powiązane pytanie dotyczące tego skryptu.

+0

Czy mógłbyś wyjaśnić trochę więcej szczegółów? Nie korzystałem wcześniej z atrybutów, a link nie jest w 100% prosty. – arbales

+0

niesamowite - dziękuję za wyjaśnienie! – arbales

+0

Ponadto, nie wydaje mi się, aby móc definiować symbole wieloznaczne, próbowałem public/* merge = keepMine, które nie działało. Próbowałem też usunąć katalog i dotknąć go, robiąc plik, ale Git narzeka i robi kolejną wersję publiczną w trakcie scalania. – arbales

0

Dodaj pliki do pliku .gitignore w formacie głównym. Kiedy dokonasz zapłaty, .gitignore zmieni się i nie będzie już ich ignorować. (Pamiętaj, że jeśli uruchomisz git clean -x, pliki zostaną nadpisane.)