2016-09-21 3 views
0

Я работаю в филиале под названием blaBla. master получает тонну от других. Чтобы обновить blaBla с помощью master, я часто использую git pull master и объединяю его в blaBla. Но это захламляет мою ветку с тонны коммитов. Я хочу объединить все совершает то, что произошло с мастером в один, а затем объединить его в мою ветку. Поэтому, когда я делаю git log, я вижу только коммиты, принадлежащие этой ветке, и те, которые являются единственными слияниями. Больше ничегоGit коммит комет до слияния

ответ

1

Я хочу объединить все новые коммиты, которые произошли в master, в один, а затем объединить его в мою ветку.

Вы действительно не хотите этого делать. Единственные разумные варианты для приведения изменений из master в полнометражной отрасль:

  1. ли нормальный git merge master без раздавливания его совершающего, так что Git может сказать, который совершает свой художественный филиал имеет общего с master (в противном случае вы будете вероятно, страдают от многочисленных конфликтов слияния). В противном случае все новые изменения в вашем сжатом объединении будут казаться, что они были частью вашей новой функции - нехорошо.

  2. Сделайте git rebase master, чтобы переделать изменения вашей ветви в верхней части от master. Это мой предпочтительный рабочий процесс, поскольку он структурирует ваши изменения как «изменения с master», независимо от того, с чего вы начали работать, но он связан со всеми обычными рисками перезаписи истории (например, общайтесь очень внимательно, если вы собираетесь git push --force ветвь, от которой зависят другие).


Update, чтобы отразить принятый ответ: Или изменить, как вы визуализируя фиксации. git log --first-parent скроет коммиты, которые были объединены в текущую ветку. Хотя обычно используется для визуализации master (сгенерированные ветви признака), он также будет работать для исключения master коммитов, которые были объединены в ветвь функции.

+0

Так в обеих из них я загромождать свою местную ветвь с тысячами фиксаций, которые произошли в мастере. Как я могу отслеживать мои изменения в ветке, которые затем касаются небольшой директории в главном? И если вы совершаете частые слияния после нескольких моментов каждый раз, чтобы прокручивать свой commtis, кажется невыполнимой задачей, если прокрутка тысяч мастеров не будет найдена в ваших филиалах –

+0

Все, что мне нужно, это увидеть мои коммиты, одноединые коммиты и соответствующие исправления для конфликтов слияния ничем иным. Как мне это сделать? –

+1

Один из вариантов заключается в том, чтобы использовать 'git log -first-parent', чтобы посмотреть на вашу ветку - вы увидите« Мастер объединения »в blaBlah (и его разрешения конфликтов), но не коммиты, которые были объединены. Я не понимаю комментарий «cluttering my local branch» в отношении 'rebase' - если вы думаете о ветвях как« изменениях, так как ветвление от «master» (т.е. 'git log master..'), post -rebase 'вы будете продолжать видеть ту же серию коммитов. – dahlbyk

0

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

Here is a good answer on using git reset --soft

+0

Как вы уже упоминали, история изменения - это большой нет-нет. Я не хочу изменять мастер. Просто соедините свои коммиты с целью слияния с моей веткой и ничего не трогайте. Возможно, это больше похоже на визуализацию git log, чем на самом деле сочетание коммитов. Поэтому, когда вы делаете 'git log', вы видите только мои коммиты, события с одним объединением и соответствующие исправления для конфликтов слияния. никакие другие тысячи попыток увидеть –

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