2009-09-15 68 views
5

我試圖將我的靜態文件保存在一個單獨的分支中,這樣我就可以避免它們融入到我的主文件夾中(在Heroku上,應用程序的段落需要保持較小)。我不想忽略我的靜態文件,因爲我想將它們放在我的「devel」分支中。Git中的單獨文件

理想情況下,我想保留test.db空白,並且我的整個公用文件夾在主分支中保持空白。

那麼,我可以在分支上創建一個「覆蓋」嗎?我可以阻止某些文件/目錄合併到我的主分支中嗎?

+0

@Jonathan:感謝拼寫檢查。 – arbales 2009-09-15 07:10:49

+0

注意:這是一個解決方案,但其他人可能會建議其他組織來實現相同的結果。 – VonC 2009-09-15 07:22:53

+0

我懷疑。我當然有興趣聽到其他有趣的解決方案,甚至只是爲了我自己/他人的薰陶。 – arbales 2009-09-15 08:42:02

回答

8

你可以定義你的主分支的同一個靜態文件,但:

由於當(即空) .gitattribute不會在其他分支上定義,這些文件的合併將會正常進行。


的想法是定義在這些靜態文件對主分支下面的內容目錄中的文件.gitattributes:

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

這三個文件將始終保持自己的本地內容(在與主人合併時,主人是空的)。你將不得不定義一個合併驅動程序(這裏叫做「keepmine」)。查看該腳本的鏈接問題。

+0

你能解釋一下更多的細節嗎?我之前沒有使用過屬性,鏈接並不是100%直接。 – arbales 2009-09-15 07:05:11

+0

真棒 - 感謝您的解釋! – arbales 2009-09-15 07:14:46

+0

此外,我似乎無法定義通配符,我試圖公開/ * merge = keepMine,這是行不通的。我也嘗試刪除目錄並觸摸它,製作一個文件,但是Git抱怨並且在合併時製作了另一個公共版本。 – arbales 2009-09-20 03:01:06

0

將文件添加到master中的.gitignore。當你簽出devel時,.gitignore會改變,不會再忽略它們。 (請注意,如果您運行的是git clean -x,這些文件將被覆蓋。)