2013-07-28 50 views
0

我有一個幾個版本的項目,他們中的每一個顯然都運行在自己的git分支上。 該項目有一個跟蹤的配置文件(谷歌應用程序引擎的app.yaml),其中包含版本名稱。如何防止git跟蹤單行?

我想通過一種方法告訴git在合併從一個分支到另一個分支的錯誤修復時忽略該行。

有沒有一種智能的方式如此呢?

回答

1

是的,是有辦法做到這一點。對於這種情況,Git支持custom merge drivers

在您的合併驅動程序中,您應該檢出文件的所有三個版本並刪除所有這些文件。然後對結果運行git merge-file。一些指針也可以在git merge-one-file helper中找到。完成後,將ours版本的行讀取到結果中。

如果你真的想要沒有跟蹤那一行,你可以使用smudge and clean filters。但我不認爲這就是你想要的。

2

簡短回答:

有趣的回答:git在英國英語的意思是一個不愉快或可鄙的人

實際答案:

的Git被設計用於跟蹤您的項目/庫的變化,而不是單個文件。

Git的設計是託沃茲與Linux的經驗 維持一個大型分佈式開發項目,與來自同一 項目,迫切需要生產獲得的文件系統的性能他 成竹在胸沿着合成工作制簡稱 。

我不認爲有這樣做的方式(這將是智能創造)。

PS:回覆可能會讓人厭惡,但git背後的意識形態是「不要」讓人們在單個文件的移動上工作。

你可以做的一件事是,在分支之間創建差異並在生成/合併補丁時完全忽略特定文件。不知道它是否確實適用/有益。

你可以嘗試另一種解決方案是:"Merge" Specific Files from Another Branch

+0

在不同分支機構中存在不合並差異的問題非常普遍,它必須有一個智能解決方案。我正在考慮一些鉤子,它會從一個模板生成這個文件,但是這對於一個相當簡單的需求來說太複雜了 – akiva

+0

我不知道「google app engine的app.yaml」,但是當問題出現時,問題就會以類似的形式出現並且例如發行說明已更新。我已經看到的解決方案/解決方法是,這些更改進入單個單獨的提交,並且在將更改重新集成到主服務器時將合併與此發佈提交之前的提交完成。 – mnagel