2017-02-17 37 views
1

Я использую SourceTree 1.9.10.0 для Windows 10, и я не хочу переустанавливать свою ветку функций EUR-1058 на master. Я делаю это так:SourceTree - Git Rebase, что приводит к автоматическому слиянию

enter image description here

Это приводит к следующему дереву:

enter image description here

И если я делаю тянуть автоматическое слияние происходит:

enter image description here

Почему это происходит? Это связано с тем, что коммит «Mailcheck rewrite» был на моем ноутбуке, и теперь я переустанавливаю свой рабочий стол, и хеши SHA-1 каким-то образом изменились или что-то подобное?

+0

Ваш язык в замешательстве. Rebase «on» - это определенная вещь, а не то, что вы делаете. Вы пытаетесь переустановить 'feature' на' master', или наоборот? Что касается автоматического слияния, по умолчанию для вашего притяжения в SourceTree, вероятно, слияние, следовательно, вы получили слияние. –

+0

@TimBiegeleisen EUR-1058 на хозяине. В SourceTree заголовок говорит 'Rebase текущие изменения на master' – Ogglas

ответ

2

Когда вы пересобили свою ветку EUR-1058 на master, вы переписали историю этой отрасли. Рассмотрим следующую диаграмму, иллюстрирующую точку:

master: ...A -- B ---- C -- D 
        \ 
EUR-1058:   E -- F 

перебазирования EUR-1058 на master средств делают следующие шаги:

  • прокатные ветвь обратно к фиксации, из которого она ответвляется master, в данном случае совершения B
  • затем переигрывание коммитов от master сверху B, в этом случае воспроизведение совершает C и D
  • наконец, повторное совершающее вы сделали, чтобы EUR-1058 так совершить B, т.е. совершает E и F


После перебазирования, схема выглядит следующим образом:

master: ...A -- B ---- C -- D 
           \ 
EUR-1058:      E' -- F' 

Обратите внимание, что я назвал E' и F', чтобы указать, что это действительно новых совершает, которые были сделаны во время переустановки.

Теперь, чтобы ответить на ваш фактический вопрос, когда вы пытались сделать git pull на EUR-1058, Git сначала проверяется, если ваш местный филиал может быть быстро пересылаются, что на пульте дистанционного управления (или в origin/EUR-1058). В этом случае ускоренная перемотка невозможна. Git рассматривает удаленную ветку в этой точке как совершенно другую, чем то, что у вас локально. Следовательно, он завершил тяну, сделав фиксацию слияния.

То, что вы, вероятно, следовало бы сделать, чтобы заставить толкать нормированный EUR-1058 ветвь пульта дистанционного управления после завершения перебазирования с помощью:

git push --force EUR-1058 

Использование силы здесь необходим, так как история/база отрасли изменилась. Это по той же причине, почему вы закончили слияние слиянием. После толчка силы вы можете продолжать жизнь как обычно.

В качестве предостережения вы должны понимать, что переписывание истории EUR-1058 может вызвать проблемы для тех, кто делится этой веткой. Итак, это нужно делать осторожно.