2014-04-24 2 views
0

Моя команда использует Bitbucket с «msysgit» и плагином git Eclipse в Windows для управления git repo. Обычно у нас есть мастер и 2 или 3 ветви функций, которые могут основываться друг на друге. Мы столкнулись с ситуацией, когда после обновления «feature-2» из «feature-1» как «feature-1», так и «feature-2» указывают на объединенную фиксацию. Это загрязняет функцию-1 с фиксациями, которые не должны находиться в 'feature-1'. См. Диаграмму ниже.Git Обновить точки слияния Обе ветви до последнего совершенства

feature-1 --0--1--\--2--3--4--\ 
        \ create \ refresh 
feature-2    \--5--6--7--\--- 

'feature-1' существует. «feature-2» создается и обрабатывается, пока работает «feature-1». Слияние выполняется с «feature-1» на «feature-2».

git checkout feature-2 
git merge feature-1 
git push 

Теперь «функция-1» и «функция-2» указывает на то передай хэш и «функция-1» содержит коммиты из «прибамбасов-2».

Иногда этот рабочий процесс ведет себя так, как я ожидаю, где «feature-2» содержит все фиксации из «feature-1» и «feature-1» остается на своей собственной голове. Спорадически мы испытываем то, что я сообщаю.

Кто-нибудь знает, что происходит? Я чувствую, что мне не хватает элементарной концепции.

ответ

1

Единственный способ это:

git checkout feature-2 
git merge feature-1 

будет в конечном итоге с feature-1 и feature-2 как, указывая на то передай, если feature-2 не имеют каких-либо фиксаций на него, так как он был либо ответвляется feature-1 или с момента последнего merge - это приведет к ускоренному слиянию, которое просто перемещает указатель на feature-2, чтобы указать на тот же фиксаж, что и feature-1. Даже если это так, будущее совершает на двух ветвях снова расходится, поскольку они все еще являются отдельными указателями, хотя они указывают на одно и то же на какое-то время.

После того, как вы сделали слияние, это нормально для присоединяемого-в-ветви (feature-2 в данном случае), как представляется, все feature-1 совершает до точки слияния в его истории - это то, что вы хотели. feature-1 не должен показывать фиксации от feature-2, если кто-то случайно не сделал противоположное слияние (например, git checkout feature-1; git merge feature-2). Вы должны иметь возможность визуализировать то, что происходит с gitk --all.

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