У меня есть проект, который серьезно нуждается в исправлении ошибок, но я также разрабатываю несколько новых функций. Я хотел бы переместить все мои последние функции в другую ветку, потому что следующая версия должна быть в основном исправлениями ошибок, а не непроверенными функциями. Я видел еще один поток, где было сказано, что я могу использовать «git branch branchname (sha1-of-commit)» для создания ветки. Мой вопрос: возможно ли, когда я создал эту ветку, переместить несколько новых коммитов из мастера в новую ветку? (перемещенные коммиты больше не должны появляться в основной ветке).Git: Как создать ветку из старой версии и выборочно добавлять фиксации с тех пор
0
A
ответ
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
фактически переписывает историю, создавая новую цепочку совершений.
Спасибо! Я вычислил способ сделать это, используя только копирование, поэтому мне не придется делать ничего сложного, просто вишневый сбор. – Miles