Здесь есть несколько возможностей, в зависимости от того, что именно вы подразумеваете под «заменить».Вы почти наверняка выбрали правильный подход, чтобы начать с слияния.«Ошибки», которые вы видели, были, вероятно, конфликтами слияния.Если вы точно знаете, что всякий раз, когда возникает конфликт, вы хотите использовать версию из вашей экспериментальной ветви, вы можете сделать:
# resolve conflicts by taking the version from experimental
# non-conflicting content is merged normally
git checkout master
git merge -Xtheirs experimental
Если вы хотите использовать версию в экспериментальной для всего, не только там, где есть конфликты, есть множество способов (на самом деле для этого нет стратегии слияния).Самое простое:
# do the merge the other way around
git checkout experimental
git merge -s ours master
git checkout master
git merge experimental
# do the merge the right way
git checkout master
git merge --no-commit experimental # merge, but stop before committing
git checkout experimental . # check out content, but don't switch branch
git commit # commit the merge
Способы, предложенные другими (reset --hard
, branch -M
), будут работать, вроде как, но, поскольку они не создают коммит слияния, ваша основная ветвь перемещается в-переход вперед, потенциально может вызвать головную боль для тех, кто должен вытащить из этого репо.Как правило, я бы сказал, что это правильный ответ, только если эти ветки не опубликованы.