2013-11-20 84 views
1

有沒有辦法讓git自動管理共享/同步分支之間的特定文件? 例如。如果我有分支:branch1和master,並且我在branch1上更改/提交file1,它會自動更新/提交具有主內容相同內容的file1(反之亦然)。 實質上,我希望一組文件始終在兩個分支中同步。如何自動保持特定文件在git分支之間同步?

我已經看過git子模塊,但我想保持同步的文件位於不同的位置(這是項目中的大部分文件)。 我對git相當陌生,我一直無法完全掌握git子樹可以做什麼。 git子樹允許我需要什麼? (如果是的話,我可以花時間學習它)

我能想到的另一個選擇是創建一個腳本,使用git-cherry-pick或checkout -patch來保持文件同步。如果我要走這條路線,櫻桃選擇還是補丁更好?

+0

請詳細解釋一下爲什麼你需要這些文件在所有分支上都是一樣的?它感覺就像是配置,可能根本不應該根據版本(或在不同的系統中)進行版本控制。 – Sven

+0

它們是代碼文件,它們中的一些是經常更改/調整的算法。比任何事情都方便。有一些文件我或多或少知道,如果我在一個分支中更改它們,我希望它們在另一個分支中更改。 – user3005553

回答

0

Git不能在每個文件的基礎上工作。它適用於完整存儲庫中的修補程序。

您可以將此文件中的更改作爲僅包含該文件的修補程序提交,並在另一個分支中將其更改爲cherrypick,反之亦然。這可以作爲一個腳本完成。或者更復雜的作爲後提交掛鉤。

但是,如果第一次更改觸及另一個文件中的功能,或者如果您在這樣的同步補丁中提交了超過一個文件,則會產生混亂。

保持手動同步會給你更多的舒適和保存,但需要一些dicipline。

+0

我試過命令「git checkout --patch分支文件」,它在修補可能已經在其他分支中提交的任何文件之前要求確認,以便atleast方法提供某種形式的安全性。 (從我可以用櫻桃挑選收集的信息,如果它是自動的,你可能會意外地覆蓋另一個分支的提交的更改) – user3005553

+0

啊我只是想爲文件創建一個僅用於該文件的文件夾,並且包含ist作爲git子模塊。那麼這將是完美的! (如果你在你的項目中使用護目鏡回購,它會更容易) –