2013-02-28 3 views
6

Мне нравится делать разработку на моей ветке разработки, а затем сливаться с мастером, когда я готов подтолкнуть к производству. Пока я ничего не совершаю с мастер-веткой, все идет гладко.Как успешно синхронизировать ветви мастера и разработки? GIT

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

Я слышал, что перезагрузка, как правило, плохая, особенно для вещей, которые вы публикуете публично.

Есть ли лучший способ управлять этим типом настройки?

ответ

2

Пути я хотел бы сделать это наоборот: мастер

  1. слияния Девы
  2. слияние Dev освоить только после этого

разрешения всех конфликтов при слиянии.

Хотя git превосходный, когда дело доходит до слияния и обработки ветвей, я не думаю, что есть быстрый способ решения конфликтов, кроме ручной, утомительной работы с использованием трехсторонних инструментов diff/merge.

Кроме того, это помогает делать то, что @cHao сказал в своем ответе ниже - часто сливать, сливать мелкие, и вы вряд ли столкнетесь с большими конфликтами.

0

от того, что я могу сказать, разработка - это то, где происходит все новое. так что, если это так, отделитесь от разработки (ветви функции). работать над этой отраслью. когда вы закончите, просто объединитесь в свою ветку функций, чтобы убедиться, что она актуальна. затем, проверьте развитие ветки и объедините свою ветвь функции в нее. так как люди в вашей команде продолжают добавлять функции в ветку разработки, в какой-то момент менеджер будет похож на okay, we're releasing, поэтому в этот момент вы объедините мастера в разработку (просто запустите кого-то, совершившего мошенническую фиксацию на хозяине), а затем мастер проверки и слияние.

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

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

5

Периодически сливайтесь от мастера к ветке развития и затем разрешайте конфликты. (Если вы делаете это регулярно, конфликты обычно будут очень незначительными.)

К тому времени, когда происходит слияние с хозяином, развитие не должно конфликтовать.

5

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

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

Если вы обнаружите, что что-то не может быть чисто слито с мастером, вы не должны пытаться решить проблему самостоятельно. Вместо этого вы должны устранить проблему в ветви функции. Как только вы устраните проблему там, вы можете с легкостью слиться с мастером.

Что касается rebase, отлично использовать rebase, пока вы не нажмете на удаленный репозиторий. После того как вы что-то нажали на удаленное репо, вы не хотите переустанавливать, так как тогда вы запутываете историю для кого-то другого, и git не может реально разрешить это для вас. Так что не бойтесь rebase, просто знайте, когда использовать его и когда не использовать его.

Один из способов, по которым вы можете использовать переустановку здесь (опять же, предположив, что вы не нажали на ветку, удаленно), чтобы помочь с вашей проблемой - взять ветку функций, которая не может быть чистой, объединена с мастером и переустановлена ​​на мастер. Это заставит вас решить проблему на этой ветке. После того, как он будет разрешен, слияние с мастером должно быть тривиальным (если мастер не был изменен снова в то же время), и вы можете чистое слияние с мастером.

Существует множество учебных пособий для git, и у них также будут хорошие примеры кода. Вот один из наиболее «классических», я считаю, что описанный здесь рабочий процесс работает хорошо. http://nvie.com/posts/a-successful-git-branching-model/

Обратите внимание: я не одобряю набор сценариев bash с именем «git flow», который пытается полуавтоматизировать рабочий процесс там (эти скрипты не очень хорошо работали для нас, когда мы их пытались), но сам рабочий процесс описанный там работает хорошо.

0

я

git checkout master 
git reset --hard dev 

Так мастер становится именно DEV. Просто не забудьте переустановить dev, если вы хотите отправить исправление на master.

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