2015-07-18 5 views
0

Я отделился от мастера, чтобы создать функцию для нашего веб-сайта, теперь у ветви есть, возможно, 1000 коммитов, и я не хочу сливать это в мастера. Я хотел бы взять HEAD ветки и в основном удалить все остальные коммиты.Сквош все фиксируется в одном

Я попытался сделать rebase, но это, похоже, не сработало, поскольку оно все еще показывает, что 1k (ish) совершает.

git rebase -i dev-dashboard 

Я тогда хотел раздавить все фиксации и сделать HEAD только совершить, а затем объединить, что в мастер. Как это может быть сделано?

+0

Это походит дубликата http://stackoverflow.com/a/5201642/1256452 - но подумайте, действительно ли вы этого хотите, поскольку слияние одного сжатого фиксации, слияние 1000 коммитов, точно такое же, как и git. Единственное реальное различие заключается в том, имеет ли полученное слияние 1000 коммитов на входящей ветке, или только на последнюю. (То же самое происходит для слияния, потому что merge просто смотрит на начало и конец, игнорируя все промежуточные коммиты.) – torek

+0

Итак, если у хозяина 5 коммитов, а у меня 1000, то когда он объединен, мастер теперь покажет 6 коммитов вместо 1006? –

+1

Обязательства не обязательно линейны. Если вы сквош сначала, а затем слейте, то «master» будет иметь * 7 *, 6 на «прямой линии» ABCDEM и один на «ветке» A - (вниз) F - (вверх) M (не считая A снова, так как он «вверх»). Если вы не сквош, у вас будет то же самое 6, но 1000 на «вниз». (Я не могу нарисовать их как график в комментарии ...) Обратите внимание, что 'git log' следует по обеим ветвям« одновременно »по умолчанию; '- first-parent' говорит ему игнорировать« входящие »ветви. – torek

ответ

1

Похоже, что это должно быть проще, но это может заставить вас начать:

git checkout topic 
git reset master 
git checkout master 
git add . 
git commit -m 'Over 1,000 fakie rebase squash!' 
git branch -d topic 

Вдохновленный этим

Git squash all commits in branch without conflicting

+0

Обратите внимание, что это отбрасывает все изменения в master, которые произошли после создания ветви темы. Не уверен, что это то, чего хочет OP. –

+0

@RaymondChen вы вполне можете представить свой собственный ответ –

+0

Уже ответил ответом, связанным первым комментарием. 'git merge --squash'. –

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