2016-02-22 8 views
0

Я пытаюсь очистить ветвь развития. Был филиал, созданный из этой ветви с несколькими коммитами, включая слияние ветки разработки обратно в ветвь функции. Затем ветвь функции была объединена с разработкой.Сквош n фиксируется в одном, когда n включает слияние

Таким образом, в развитии у меня есть несколько фиксаций:

"Some commit" 
"More commit" 
"merge branch development into feature1" 
"Another commit - start of feature work" 
"First commit that does not include feature1" 

Я хотел бы, чтобы разбить первые 4 фиксаций в один коммит. Но независимо от того, что я пробую, все из-за слияния. Из-за работы слияния, которая была выполнена на ветке разработки, она попадает в commit1.

Разрушение этих коммитов возможно?

EDIT, попытался с помощью перебазирования следующим образом:

Когда я пытаюсь 'мерзавец перебазироваться -i HEAD ~ 4' я получаю следующее:

pick 3e217ba Another commit - start of feature work 
pick b44463a merge branch development into feature1 
pick 625ba76 More commit 
pick 996b98e Some commit 

И я могу изменить, что

pick 3e217ba Another commit - start of feature work 
squash b44463a merge branch development into feature1 
squash 625ba76 More commit 
squash 996b98e Some commit 

Однако проблема заключается в том, что я сжимаю commit 'squash b44463a, слияние ветки в feature1, что я не хочу делать. Поскольку это слияние содержало работу из ветви разработки, которая была объединена с ветвью feature1. Я хочу, чтобы этот коммит выглядел так, как будто это был только материал feature1.

Если я удаляю линию слияния при перезагрузке, она терпит неудачу.

+0

вы попробовали git squash? – CodeWizard

+0

@codeWizard у меня есть. Я думаю, что проблема, с которой я столкнулась, - сквош, заключается в том, что раздавливание в слиянии сжимается в коммитах, которые не были частью этой функции. Это связано с тем, что это слияние привело к изменению ветвей разработки в ветвь feature1. – lostintranslation

+0

Постарайтесь выполнить ответ и посмотреть, работает ли его foryou, – CodeWizard

ответ

2

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

Попробуйте выполнить следующий заказ в редакторе интерактивной ребазы.

pick 3e217ba Another commit - start of feature work 
squash 625ba76 More commit 
squash 996b98e Some commit 
pick b44463a merge branch development into feature1 
+0

Удивительный! Не думал об изменении порядка, это был ключ. – lostintranslation

0

Для того, чтобы сделать GIT сквош следует тем шагам:

// X is the number of commits you wish to squash 
git rebase -i HEAD~X 

После того, как вы осечение ваших коммитов - выберите s для сквоша = он будет сочетать в себе все коммиты в одну фиксации.

enter image description here


Вы также имеете --root флаг в случае, если вам это нужно

попробовать: git rebase -i --root

--root

Rebase all commits reachable from <branch>, instead of limiting them with 
an <upstream>. 

This allows you to rebase the root commit(s) on a branch. 
When used with --onto, it will skip changes already contained in `<newbase>` 
(instead of `<upstream>`) whereas without --onto it will operate on every 
change. When used together with both --onto and --preserve-merges, all root 
commits will be rewritten to have `<newbase>` as parent instead.` 
+0

См. Редактирование. Это то, что я уже пробовал. Не скворит только изменения Feature1, из-за того, что в feature1 произошел слияние разработки. – lostintranslation

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