2014-10-01 5 views
0

В основной ветке у меня ниже совершает:Как удалить старый фиксатор в ни одной ветви мастера после набора вишни?

A-B-C-D-HEAD 

В филиале "тест" у меня есть:

A 

Я:

git cherry-pick <SHA FOR COMMIT C> 

Однако, я не хочу совершить B на ветке "test". Как я могу игнорировать это? так что тест филиал в конечном итоге, как: AC

+1

Вы хотите только совершить C на тестовой ветке? Или A и C на тестовой ветке? –

+2

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

+0

Обновлен вопрос. Спасибо :) – Sara

ответ

4

Вы можете сделать это: (Предполагается, что мастер указывает на D)
1. (мастер) git-checkout -b test
2. (тест) git rebase -i
У вас будет список фиксируется как:

pick b6e7d38 A 
pick 263b0cc B 
pick 6bcea1d C 
pick 6kdf8gd D 

Просто удалите фиксацию, которую вы не хотите (B и D здесь). Сохранить и продолжить. Он будет опущен при перезагрузке.

+0

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

+0

Извините, но я не согласен с вашей точкой. Пожалуйста, обратитесь к этому ниже. Doc Вы можете комбинировать свои коммиты с помощью rebase и squash тех, которые вам не нужны. См. Это: http://gitready.com/advanced/2009/02/10/squashing-commits-with-rebase.html – Garima

+0

Согласен, ваш подход был в порядке, но на неправильной ветке. Если вы переустановите основную ветку и удалите D и B, тогда они исчезнут навсегда. Вы подходите правильно, если она это делала во время тестовой ветви, где тест возник из мастера, указывающего на D. Я отредактировал ответ, поскольку rebase -i master был бы грязным для нее –

0

Лучшим вариантом в зависимости от меня будет git format-path.

Шаг1: (мастер) git format-patch -2
Шаг2: (мастер) git checkout -b test <SHA of Commit-A>
Step3: (тест) git am 0002-Commit-Msg-of-C

Вы хорошо идти!

Объяснение: Шаг1 создаст 2 патч-файлов, один для фиксации D и один для C. В Step3 вы применяете патч (изменения), сделанные во время фиксации-C над A (контрольные точки А, Step2)

Надеюсь, это поможет!

PS: Это будет работать, если ваши изменения в B не имеют никакого отношения к изменениям в C.

+0

Все это необходимо для 'git cherry-pick'. – Jubobs