2013-06-25 1 views
0

У меня есть проект, который серьезно нуждается в исправлении ошибок, но я также разрабатываю несколько новых функций. Я хотел бы переместить все мои последние функции в другую ветку, потому что следующая версия должна быть в основном исправлениями ошибок, а не непроверенными функциями. Я видел еще один поток, где было сказано, что я могу использовать «git branch branchname (sha1-of-commit)» для создания ветки. Мой вопрос: возможно ли, когда я создал эту ветку, переместить несколько новых коммитов из мастера в новую ветку? (перемещенные коммиты больше не должны появляться в основной ветке).Git: Как создать ветку из старой версии и выборочно добавлять фиксации с тех пор

ответ

2

Вы можете git cherry-pick совершает переход к новой ветке. Каждый cherry-pick применяет изменения данной фиксации, эффективно копируя их.

git checkout branchname 
git cherry-pick <sha-of-interesting-commit> 

Снятие коммитов из главной ветви trikcier. Если вы не подтолкнули эти коммиты, вы можете сделать интерактивный хозяина на себя, а затем удалить коммиты, удалив их из списка представленных коммитов.

Пример: rebases последние пять коммитов на текущей ветке

git rebase --interactive HEAD~5 

Он представит вам список фиксаций, где вы можете удалить те, которые вы не хотите

pick 1fc6c95 Patch A 
pick 6b2481b Patch B 
pick dd1475d something I want to split 
pick c619268 A fix for Patch B 
pick fa39187 something to add to patch A 

См. https://help.github.com/articles/interactive-rebase для получения дополнительной информации.

Обратите внимание, что cherry-pick копий, а не ходов, и rebase --interactive фактически переписывает историю, создавая новую цепочку совершений.

+0

Спасибо! Я вычислил способ сделать это, используя только копирование, поэтому мне не придется делать ничего сложного, просто вишневый сбор. – Miles