我現在每天都在使用git,而這次我遇到了一個我可以這樣描述的問題。「Layering」git存儲庫
我有一個存放整個網站結構的倉庫,web根目錄位於倉庫的根目錄。一切都很好,直到這是一個單一網站的存儲庫。然而,同一個回購現在用於幾個網站 - 基本上是相同的網站,用不同的語言,小模板調整,不同的圖形等等。這些東西自然是版本化的。
有一個主分支,它擁有該網站的原始源代碼,並且我想讓主(或其他分支)擁有在所有網站中通用的代碼,因爲最終會發生變化特定於特定場所以包含在回購的通用部分中。
接下來,每個使用此源代碼的站點都有一個分支。所有這些分支(例如,站點1,站點2和站點3)都是從主分支創建的,並且每個站點都克隆了正確的分支。
嗯,這似乎是一個好主意,直到我開始到處進行更改。
如果我在site1分支上進行了更改,並且我需要將該更改複製到site2分支,我會從一個分支挑選提交到另一個分支。合併不存在,因爲site1分支上有其他更改,它們不屬於site2分支。對於這種情況還有其他更優雅的解決方案,還是櫻桃採摘正是爲了這個目的?
現在,我真正的「問題」是當我改變主人,然後我想將所有這些改變複製到所有分支。當然,考慮到所有分支都是主人的後代,而我做想要在所有網站*分支的變化,我切換到每個分支和合並主人。
這會爲所有分支創建一個非常討厭的歷史。每一輪合併的相當複雜圖形,這使我得出兩個結論:
- 分層分支機構只要我看我的步驟,並且沒有做任何愚蠢的可以工作的這種方式,而不是試圖讓任何意義在所有分支機構的歷史圖表中。或..
- 必須有一些更好,更合適的方式來做到這一點。
爲了說明我的「問題」,我將給出一個創建這些分支後得到的圖形圖像,添加了很少的分支特定提交,挑選其中的幾個,添加和合並來自主機的一個提交到所有分支,提交或兩個特定的分支,然後再進行一次主合併。
我不知道,我喜歡簡單,也許我不習慣看到難以遵循這樣一個圖表(這隻會在複雜每以下合併長大,我'我害怕)。
我想我可以一路做櫻桃採摘,並有整潔的歷史圖,但這聽起來也不對,因爲我可能會連續做幾次提交,然後忘了選擇其中一個所有其他分支...
所以...任何想法,經驗,建議,你不介意分享?
更新:我在接受的答案的評論中選擇了一個解決方案。感謝所有貢獻的人!
更新2:即使它不是密切相關的這個問題,recently I stumbled upon this model of branching這似乎是適用於幾乎任何有組織的開發週期,以GIT作爲基本DVCS。這是一個非常好的閱讀。推薦的。
太少時間的答案,但看看'rebase'。 – KingCrunch 2011-05-12 11:39:15
合併可能並不像您想象的那麼糟糕。從根本上說,合併意味着「將另一個分支的所有東西都合併到這個分支中」 - 這聽起來像是你想要做的。你可能想使用'git merge --log'在合併提交消息中包含合併提交的主題列表,然後使用'git log --first-parent'(或'gitk --first-parent ')查看siteX分支上的歷史記錄。 – Cascabel 2011-05-12 12:30:14