Создать ветку без старых коммитов - PullRequest
2 голосов
/ 13 февраля 2020

Я добавил в коммит O1 хранилище, чтобы исправить в нем ошибку. Я сделал два коммита, B1 и B2, в главную ветку.

O1 -> B1 -> B2

Позже я решил добавить новую функцию. Я добавил еще несколько коммитов в ветку master.

O1 -> B1 -> B2 -> F1 -> F2 -> F3

Эта новая версия, с исправлением и функцией, в настоящее время используется мной.

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

Как создать ветку / что-то, что содержит только функцию:

O1 -> F1 -> F2 -> F3

... чтобы я мог сделать с ней запрос на извлечение, одновременно поддерживая версию с обоими функция и исправление, которые я могу использовать сам?

Ответы [ 3 ]

2 голосов
/ 13 февраля 2020

Ii можно сделать следующим образом

git rebase --onto O1 B2 F3

Вы просите перебазировать F3 поверх O1, отбрасывая ревизии до B2.

2 голосов
/ 13 февраля 2020
git rebase B2 F3 --onto O1

Это в основном говорит: «Отрежьте коммиты от F3 до места, где эта ветвь отклоняется от B2, и вставьте их поверх O1."

Обратите внимание, что это не Неважно, что текущая ветвь, когда вы выполняете это (хотя вы не можете иметь никаких ожидающих изменений), но если вы уже на F3, вы можете опустить этот параметр, который по умолчанию равен текущей ветке:

git rebase B2 --onto O1
0 голосов
/ 13 февраля 2020

Я бы сделал (с проверкой master и F3, являющейся HEAD)

git checkout -b feature
git rebase -i HEAD~6

, выберите drop для B1 и B2

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...