У меня BranchA
, который на 113 коммитов впереди BranchB
.
Но я хочу, чтобы последние 10 или около того совершили переход от BranchA
к BranchB
.
Есть ли способ сделать это?
У меня BranchA
, который на 113 коммитов впереди BranchB
.
Но я хочу, чтобы последние 10 или около того совершили переход от BranchA
к BranchB
.
Есть ли способ сделать это?
Команда git cherry-pick <commit>
позволяет вам взять один коммит (из любой ветки) и, по сути, перебазировать его в вашей рабочей ветке.
Глава 5 книги Pro Git объясняет это лучше, чем я, в комплекте с диаграммами и тому подобным. (Глава о ребазинге также хороша для чтения.)
И наконец, есть несколько хороших комментариев по поводу выбора вишни против слияния против перебазирования в другом вопросе SO.
вы можете вишнево-выбрать желаемые коммиты.
Я нашел этот Как сделать несколько комбайнов вишней
Я бы принял принятый ответ.
Если BranchA не был нажат на удаленный компьютер, вы можете изменить порядок фиксаций с помощью rebase
, а затем просто merge
. Предпочтительно использовать merge
над rebase
, когда это возможно, потому что оно не создает повторяющихся коммитов.
git checkout BranchA
git rebase -i HEAD~113
... reorder the commits so the 10 you want are first ...
git checkout BranchB
git merge [the 10th commit]
ИСТОЧНИК: https://git-scm.com/book/en/v2/Distributed-Git-Maintaining-a-Project#Integrating-Contributed-Work
Другой способ переместить введенную работу из одной ветки в другую - это выбрать вишневый. Вишневый выбор в Git похож на rebase для одного фиксации. Он берет патч, который был введен в фиксацию, и пытается повторно применить его на ветке, в которую вы сейчас находитесь. Это полезно, если у вас есть несколько коммитов в ветки темы, и вы хотите интегрировать только одну из них или если у вас есть только одна фиксация в ветке темы, и вы предпочтете ее выбрать, а не выполнить переустановку. Например, предположим, что у вас есть проект, который выглядит так:
Если вы хотите потянуть фиксацию e43a6 в свою основную ветвь, вы можете запустить
$ git cherry-pick e43a6
Finished one cherry-pick.
[master]: created a0a41a9: "More friendly message when locking the index fails."
3 files changed, 17 insertions(+), 3 deletions(-)
Это приведет к такому же изменению, внесенному в e43a6, но вы получите новое значение SHA-1 commit, потому что применяемая дата отличается. Теперь ваша история выглядит так:
Теперь вы можете удалить ветку своей темы и удалить те коммиты, которые вы не хотите втягивать.