2011-12-28 2 views
0

позволяет сказать, что у меня есть две ветвили git merge вызывает потери файлов?

  1. мастер
  2. разработки

в master у меня есть что-то вроде

index.php 
lib/something.php 
lib/importantbugfix.php (newer) 

в develop у меня есть что-то вроде

index.php 
lib/something.php 
lib/importantbugfix.php 
lib/config.php 

Я хочу importantbugfix.php на master до merge на develop, как мы можем это сделать?

так я что-то вроде

в master

index.php 
lib/something.php 
lib/importantbugfix.php (newer) 

в develop

index.php 
lib/something.php 
lib/importantbugfix.php (same newer) 
lib/config.php 

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

в master

index.php 
lib/something.php 

в develop

index.php 
lib/something.php 
lib/importantbugfix.php (newer) 
lib/config.php 

, а затем выше.

+1

идти развивать отрасль выпуск 'мерзавец объединить master' –

+0

@SrinivasReddyThatiparthy будут мои файлы на мастер ветви исчезают? Я имею в виду, что мой мастер филиала пропал? –

ответ

1

Нет, слияние не заменяет; он объединяет - таким образом, имя.

Существует несколько способов его достижения.

Самый простой:

git checkout develop 
git merge master 

Это создаст слияние фиксации. Он объединит изменения, которые у вас есть на мастере, на изменения, которые у вас есть. Если вы изменили одну и ту же часть файла в обоих местах, вы получите конфликт слияния и должны будете сообщить git, какой набор изменений вы хотите сохранить.

Другой способ:

git checkout develop 
git rebase master 

Это раскручивать любые коммиты вы сделали на разработку, так как это был последний созданный из/слилась с мастером и обновлять его все новые совершающее на мастера с того момента, по существу «догоняющий» развивается с мастером. Затем он повторит сделанные вами коммиты, разработанные поверх обновленных коммитов, которые пришли от мастера. Эффективно это делает его похожим на то, что ваша ветка развития была создана от мастера сегодня, а затем вы внесли свои изменения, связанные с развитием.

Результатом этого является более чистая история. Предостережение заключается в том, что вы не должны этого делать, если ветка разработки делится с другими, а коммиты, прошедшие в последний раз, когда она была разветвленной/объединенной, уже были разделены.

0

Git merge может привести к потере данных, если ваши разработчики не понимают, что они делают. Вчера это случилось с моей (двух человек) командой. Мы используем Git Gui для Windows для слияний.

Сценарий два в связанной статье объясняет эту ситуацию в глубину. Если вы страдаете от этого, у вас есть мое сочувствие, потому что вы испытываете болезненный опыт слияния.

http://randyfay.com/content/avoiding-git-disasters-gory-story

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