Как вставить и объединить конкретную историю коммитов? - PullRequest
0 голосов
/ 04 мая 2018

Я клонировал репо из Perfoce в Git локально со всей его историей, назвал его SubProj, а затем перенес его в удаленное репо и использовал это удаленное репо для слияния SubProj в SuperProj.

Нет способа импортировать часть истории из Perforce в Git: @all или none. Во всяком случае, все прошло нормально, и я удалил локальный репо и его удаленный.

Теперь в депо Perforce произошли изменения SubProj, поэтому я снова клонировал SubProj со всей историей, хочу нажать, затем объединить с SuperProj, но я не хочу всю историю (только новую изменения).

Скажите, SubProj имеет эту историю, и она локальна:

A - B - C - D - E - F - G - H * * тысячу двадцать-одна

Я знаю, что мы можем нажать, начиная с самого старого коммита, и до конкретного коммита . Пример:

git push SubProjRemote <commit C on master>:master

Нажимает A--B--C на пульт.

Но:

Могу ли я отправить только E--F--G--H в удаленный репозиторий?

Могу ли я нажать все, но затем объединить только E--F--G--H?

1 Ответ

0 голосов
/ 05 мая 2018

Если вы хотите объединить определенный раздел ветви в другой филиал, вы можете использовать функцию rebase's on. Как только вы попали в ветку с коммитами, которые вы хотите + дополнительные коммиты, вы можете запустить:

git rebase --onto

Для вашего примера принятия коммитов E через H, но не A-D, вы можете выполнить следующее, заменив хеш коммитов на D и H:

git rebase --onto__branch D H

Ветвь теперь должна иметь базу other_branch, но она также должна была применять коммиты от E до H. Затем вы можете нажать эту ветку, куда бы она ни шла.

...