2012-07-06 120 views
1

合併分支機構,Git的我們的設置,我們有以下永久分支: - 主 | - 修復 - x.x中 - 釋放 - 開發還原使用Git

發展,是我們在開發代碼去哪裏。當我們幾乎準備好「發佈」時,它會合併到「發佈」中,在此之前我們會做出任何額外的最後更改,然後將其合併到「主」中併爲其添加標籤。如果在舊版本中發現錯誤,我們爲它創建一個單獨的分支,以便它可以修復並給出相關的版本標記。

我們已經取得了新手的錯誤,我不經意地合併了一些實驗代碼爲釋放(這是基於發展),然後一個同事做了一個類似的錯誤釋放合併到一個分支修正後不久在哪裏。所以發佈和修復幾乎是我們開發分支的副本。

我想回去,最好是從歷史記錄中刪除提交,因爲這不是一個編碼錯誤,而是一個完全混亂的合併。但我一直在挖掘,無法找到一個明確的方式來與rebase做到這一點。我找不到如何運行rebase來列出我想要刪除的提交。我們在master中犯了這個錯誤似乎很容易。

有關如何最好地從這恢復的任何建議表示讚賞。從那時起,這些已經是一些提交,所以他們不在腦海。

回答

1

你可以像任何其他提交一樣使用git reset來撤消合併提交。例如,如果您要刪除1,2或3次提交,則簡寫分別爲git reset HEAD~1git reset HEAD~2git reset HEAD~3

到現在爲止您將編輯您的本地提交樹。如果要更新遠程服務器,則必須執行git push --force(注意,force標誌可能是更多問題的根源)。

由於其他開發人員可能已經提取了有問題的提交,因此有可能因爲您將更改遠程服務器中的分支頭引用,他們的git客戶端將失去其跟蹤。因此,他們再次獲得一致副本的最簡單方法就是git clone回購。這是您應該避免使用--force標誌的原因。當然,還有很多其他解決方案可以避免再次克隆所有內容。但他們很難解釋,並取決於特定的情況。