2010-03-30 48 views
5

我需要經常在開發和主之間合併。git策略有一組提交限制到一個特定的分支

我也有一個提交,我需要只適用於開發,爲本地工作。

此前我只從開發人員合併到master,所以我有一個分支production_changes,其中包含dev特殊提交的「撤消提交」。並從主人,我合併了這一點。用於正常工作。

現在每個我從開發合併的時間來掌握,反之亦然,我不得不摘櫻桃和應用相同的一再承諾:(。這是醜陋的。

我能適應什麼策略,使我可以在2個分支之間的無縫融合,但仍保留了一些,只有對那些分支的一個變化?

回答

1

我想,以防止某些文件建議merge driver(一.gitattributes文件中在合併指令聲明腳本)受到特定提交的影響
(例如,如果某些文件是mu st不會被修改,那個驅動程序就像"keep mine" merge一樣簡單。這已被用來merge only specific directories通過實例,或者跟蹤如何config files are managed每枝)

的OP補充說:

但我期待更多的一個聰明的解決方案,如果存在的話,像「創建具有撤銷分支只提交,並應用它來掌握,假它開發」

聰明的解決方案...
嗯,我可以提出衝突合併git rerere(重用記錄分辨率:如果合併到dev觸發衝突,如果解決的衝突是你有效地取消合併,你可以記錄該分辨率,以便在下一次合併時自動重複。

請參閱Rerere Your Boat...作者Scott Chacon瞭解更多信息。

+0

應該可以工作,但我期待更聰明的解決方案,如果存在的話,比如「創建一個只有撤消提交的分支並將其應用於主設備,將其假設在設備上」 – 2010-03-30 12:14:23

+0

@ becomingGuru:剛完成我的回答用'git rerere'以防萬一。 – VonC 2010-03-30 17:28:50

0

我會在本地分支(即從未推到任何位置)執行此操作,在我從主服務器拉出時,我將重新設置到開發分支頂端。這並不完美,但我認爲這比櫻桃採摘要好一點。

+0

即使你重新綁定到最新的master,有時候,當這個提交進入時你需要合併master。 – 2010-03-30 12:10:19

1

對git的謊言:將diff設置在以「dev」分支的分支點爲根的單獨分支中。然後「合併」成主沒有實際改變主:像git merge -s ours devfix-branch(你做這個master

然後回到dev和常合併:git merge devfix-branch。現在devmaster都會認爲它們已經有了devfix,並且你可以繼續合併到master。

這是作爲練習留給讀者,看看這是否實際工作,或可以使工作。

+0

太棒了!謝謝!下一次我想做這樣的事情,這就是我將要使用的。 現在,我解決了它通過使用一些未選中的文件照顧變化,以便合併是無縫的! – 2010-04-01 10:05:24

相關問題