2012-07-31 83 views
2

我有主分支下面的目錄結構如何讓git在子樹合併期間忽略某些文件夾和文件?

templates/something.lib 
templates/libs/1.lib 

而且我也有以下文件(右根)

a.html 
b.html 

然後我去掌握並加載一個templates_master分支模板插入主模板夾

git read-tree --prefix=templates/ -u templates_master 

這導致進入該主結構現在

templates/something.lib 
templates/libs/1.lib 
templates/a.html 
templates/b.html 

然後,我留在主人身上,並在模板/ a.html中進行一些更改,進行多次提交。現在我想要這個修改過的模板/ a.html回到它的原始分支。我切換到templates_master分支並運行此命令

git merge -s subtree master 

但是這個命令不僅會將主:模板/ a.html到templates_master:a.html還會將自身複製這些文件的庫所以基本上現在我templates_master分公司擁有一切原來的主模板/有。是否有可能告訴git只保留主分支中的某些文件和文件夾,或者這個邏輯是否在git級別上進行了硬編碼,即在子目錄合併期間,它使用樹狀指向模板/並且模板內部的所有內容都是並且只能是孩子模板/?

+0

是的,不幸的是櫻桃挑選這裏不是一個解決方案。我正在嘗試構建一個自動化系統,它將採取主模板更改,將這些更改移動到單獨的「主模板」分支,然後主模板將合併到主題分支中:templates_theme1,templates_theme2等。問題是產品是結構化的 - 模板/文件夾下的某些內容與模板無關,不會被用於最終的templates_theme1分支。 – Eugene 2012-07-31 14:12:06

回答

0

不幸的是,我很確定這是子樹工作流程的要求。他們畢竟被稱爲「子樹」。在子樹的任何路徑中不能有超級項目文件。

這就是說,這出現了很多!我想知道有人會想到一個解決方案。

想象一下,如果您可以將2個項目合併到同一文件夾中嗎?你將如何處理像README這樣的常見文件?如果你添加一個新文件,你會期望什麼;怎麼可能知道你將它添加到哪個項目?幾乎需要一個類似於perforce中客戶端映射的新概念來適應這種需求。

現在試着讓你的子項目在子文件夾中