2016-12-07 47 views
0

我使用git來開發和維護我的應用程序。爲少數客戶管理應用程序

我有一個問題,因爲我的應用程序使用,以5個客戶和他們每個人都有自己的配置,如標識,一些特殊的功能,CONFIGS等等

現在我寫了新的組件和需要將此組件添加到每個客戶端實例,我不知道如何正確執行此操作。

現在每個客戶都在不同的分支上,我知道這是不好的選擇。

如果我需要更新應用程序,我需要將代碼複製並粘貼到每個客戶端並將其推送到回購站。

我知道這是非常薄弱的​​,但如何正確地做到這一點?

回答

0

在密封底座之前,您可能不應該將應用程序分支到5個不同的分支。但是,如果他們不太遠的分歧,你有三種可能性:

  1. 應用更改,創建了一個補丁(git diff > patch),復位(這樣你就可以檢查出),並應用在你的五個院院長(git apply patch),

  2. 叉從master一個新的分支,應用相應的修改,提交和git cherry-pick,在每個分支機構的承諾(爲1相同的效果),然後刪除多餘的分支,

  3. 將更改應用於master和然後git rebase你的分支在此之上。這有一個好處,即編輯將是所有五個共同的單一提交。 See here實際引入重組。

1和2將您新提交的獨立副本放在五個分支歷史記錄的頂部。 3次嘗試在分叉之前擠壓新的提交。後者的一個副作用是從該日起的所有提交必須重新重建,因爲不能修改現有提交的父代。必須強制每個分支在3之後首次推送到存儲庫。詳細信息都在鏈接文檔中討論。

請注意,如果您做出了一些與您想要更新的內容相沖突的更爲激烈的更改,那麼這三種方式將會以不同的方式失敗,因此很有必要做好準備。

  1. 在其默認設置中只會立即拒絕修補程序,不作任何更改。您需要進一步調查爲什麼它不適用,或者使用相對安全的--reject(請先閱讀手冊)。

  2. 將裝點故障點與<<<<<<<=======>>>>>>>就像一個失敗的git merge和你需要解決衝突並重新提交,或中止操作(它給你的建議是什麼命令來使用)。

  3. 會產生一些看起來很恐怖的衝突消息,你可能會結束更新中的幾個提交。再次,git會試圖幫助如何繼續。

你總是有git reset --hardgit cherry-pick --abortgit rebase --abort如果出現問題,以幫助您。如果您對使用它們感到不舒服,您也可以在對其進行更改之前製作每個分支機構當前狀態的副本(git branch backup),然後將所有內容都退回git reset --hard backup

相關問題