git merge уже обновлен, когда это не так

при работе над проектом с использованием git и bitbucket.com, есть следующие ветви:

master
development
uat
production

когда я начал проектную работу, я взял git-клон разработки (естественно, думая, что он содержит современный код). Месяцы работы спустя, и теперь оказывается, что код в производственной ветви (который в настоящее время работает в производстве) имеет более позднюю версию, чем код, с которого я начал в ветви разработки.

когда я пытаюсь кому:

git checkout development
git merge production

Он говорит "уже в курсе". Когда я иду:

git diff production..development

он выплевывает много изменений, которые говорят, что отрасль производства имеет код, который не находится в ветке развития. Как я могу объединить производственный код с кодом разработки, не вытирая месяцы работы?

1 ответов


вы можете не хотеть merge, а rebase. То есть, возьмите коммиты, которые вы сделали, коммиты вы добавлено в филиал development-те, которых не было, когда вы впервые сделали свой clone, но есть ли сейчас-и посмотрите, какие изменения каждый из них сделал в последовательности; и примените эти изменения, снова в последовательности, поверх ветви production.

(некоторые из них, вероятно, не войдут чисто: изменения на production которых нет в development будет означать, что некоторые, может быть, многие из внесенных вами изменений необходимо изменить, чтобы вписаться. Хуже того, изменение одного из ваших изменений почти наверняка повлияет на другие ваши изменения, поэтому эта перезагрузка может быть трудной.)

что сказал... "До настоящего времени" не означает, что код является тем же самым, в любом случае. Это просто означает, что commit graph показывает, что нет ничего нового, чтобы принести. Это, в свою очередь, подразумевает, что вы (или кто-то другой) уже сделали слияние. The дерево добавленные в окончательное слияние (результат слияния) - это не то, что вы хотите, но единственное, что может видеть git, - это то, что слияние сделано. См.почему после слияния GIT говорит "уже обновлено", но различия между ветвями все еще существуют? для примера с участием git revert, например.