git merge / rebase / cherrypick пропускает коммиты на master - PullRequest
0 голосов
/ 19 декабря 2018

У меня следующая ситуация:

   _____________G ..myBranch
  /
 /
S---B---C1---C2---C3---C..---C230 .. master

S=working version
B=bad version of task
G=good version of task
C=commit after B

, и я хотел бы зафиксировать и объединить мастер в myBranch без использования B, а затем слить myBranch в мастер с новыми коммитами.Возможно ли что-то подобное с помощью merge / rebase / cherrypicks?

Спасибо!

Ответы [ 2 ]

0 голосов
/ 19 декабря 2018

Ответ git rebase должен работать, но если вам интересно, как работает cherry-pick, вы можете использовать его вместо этого, например так:

git checkout myBranch
git cherry-pick C1..master

Это создастновые коммиты в myBranch на основе различий коммитов C1 до C230 в master (что аналогично тому, что было бы при использовании rebase -i).

Если вы еще не опубликовали master и вы можете просто переписать историю, вы можете использовать git reset для обновления master:

git checkout master
git reset --hard myBranch

Если вы опубликовано опубликовано master , что не рекомендуется.Вместо этого вы можете объединить master в myBranch , используя нашу стратегию, а затем объединить master в myBranch :

git checkout myBranch
git merge -s ours master
git checkout master
git merge myBranch
0 голосов
/ 19 декабря 2018

Да.Вы можете сделать:

git checkout mybranch
git rebase -i master

Это откроет вам экран, на котором вы сможете выбрать, какие коммиты включить.Удалите строку с фиксацией B, сохраните и закройте редактор.

См. Также: https://git -scm.com / book / ru / v2 / Git-Tools-Rewriting-История

...