2016-05-13 2 views
1

Итак, у меня есть две ветки: мастер и другие. Я объединил другую ветвь в master, но почему-то источник для одного коммита не изменился.Git: git diff показывает изменения, но merge говорит до настоящего времени?

Я могу видеть эти фиксации в главном режиме, запустив git log, но фактический исходный код не изменился. В ветке other у нее есть новые изменения, но master нет.

Так работает:

git diff master..other dir_name 

показывает мне это:

--- a/dir_name/views/purchase_order_report.xml 
+++ b/dir_name/views/purchase_order_report.xml 
@@ -60,9 +60,9 @@ 
        <span t-field="o.partner_id.name"/> 
        <div t-field="o.partner_id" 
         t-field-options='{"widget": "contact", "fields": ["address"], "no_marker": true}'/> 
-     <t t-if="o.partner_id.child_ids.search([('type', '=', 'invoice')])"> 
+     <t t-if="o.partner_id.child_ids.filtered(lambda r: r.type == 'invoice')"> 
         <span>Attn: 
-       <span t-esc="o.partner_id.child_ids.search([('type', '=', 'invoice')])[0].name"/> 
+       <span t-esc="o.partner_id.child_ids.filtered(lambda r: r.type == 'invoice')[0].name"/> 
         </span> 
        </t> 
       </div> 

+ линии являются те, которые должны быть в мастер тоже, но не по какой-то причине.

И делает:

git checkout master 
git merge other 
Already up-to-date. 

Так что, кажется, что-то напутал.

Обновление. Я также вишневый взял некоторые коммиты от master до other ветви. Может быть, это вызвало некоторые проблемы?

ответ

0

Моя догадка говорит, что есть некоторые коммиты в master, которые не указаны в other. git-merge объединяет фактические коммиты - тот факт, что у вас разные файлы, не означает, что они не объединены.

Try работает:

git checkout other 
git merge master 

и посмотреть, будет ли изменен файл. Если да, то именно из-за того, что я описал выше.

Edit: если вы хотите, чтобы изменения из master в other только для этого файла, вы можете найти коммиты, которые изменили файл на master и вишни, забрать их (Google git cherry-pick - обратите внимание, что это будет вводить целые фиксаций , что может быть нежелательным в вашем случае) или применить их вручную. Невозможно получить «только этот файл» через слияние.

+0

Да, есть отличия от мастера, которые не находятся в другой ветке. Но мне еще не нужны эти изменения в «другом». Дело в том, что ветвь 'master' используется для всех изменений. И 'other' - это ветвь, которая поступает из стабильной ветки, которая немного отстает от« master »(другими словами, теперь я развиваю функцию/исправление из ветки, которая поступает из стабильной ветви). Может быть, эта логика немного испорчена, но вот что у меня есть сейчас :) – Andrius

+0

Нет, мне нужно обратное. Есть изменения из другой ветви, которая не применима к мастеру, даже если я слился, и я вижу, что фиксация в мастер ... – Andrius

+0

Вы случайно сменили 'other' на' master', а затем вернули слияние? – CptBartender

0

Попробуйте git cherry master other, который выводит '+' или '-', за которым следует commit-sha1, которые уже находятся в истории других, но еще не находятся в мастер-версии. Вы можете просто игнорировать линии «-» и сосредоточиться на линиях «+». '-' означает, что мастер не объединил коммит, но получил уже эквивалентный патч (применяется git am, git cherry-pick или git rebase). «+» означает, что мастер не объединил фиксацию и не имеет эквивалентного патча.

, а затем git log other - имя_источника, чтобы узнать, есть ли на выходе какой-либо символ '+' commit-sha1.

Смежные вопросы