在合併我的變化對上游的主,我經常發現自己做了以下內容:覆蓋和推進一個Git分支
git checkout somefeature
git checkout -b integration
git rebase master # resolving conflicts along the way
git checkout somefeature
git merge integration # or rebase, doesn't matter in this example
我通常會發現,併購整合分支回我的特性分支做失敗到一些衝突。我的第一個問題是,「如果我的整合分支是某些特徵的後代,並且我已經解決了與上游主方的衝突,爲什麼會發生這種情況?」
如果您想知道爲什麼我要使用集成分支開始,那是爲了防止我的當前分支出現半失敗合併。
我目前的解決方法是這樣:
git checkout integration
git branch -f somefeature # overwrite the branch
現在的問題是,我不能把我變回遠程分支:
git push origin somefeature
! [rejected] somefeature -> somefeature (non-fast forward)
所以現在我不得不刪除遠程分支並重新推送我的更改。這不是實現此目的的最佳方式,所以我想知道:「覆蓋分支並將更改推送到遠程分支的最佳方法是什麼?」
請注意,儘管您不應該更改已發佈的提交,但與您一起工作的其他人也會遇到同樣的問題,因爲他們已經在其存儲庫中複製了不兼容的提交。只要它是本地的,重新啓動就沒問題,但重新提交併重新發布它們是邪惡的 - 因此Git會拒絕* *錯誤(這很聰明,並且指出您可能做錯了事情)。 – poke 2011-01-19 21:48:54