Git: Как вытащить, чтобы начать с определенного коммита, пока последний коммит не пропустил 1 коммит? - PullRequest
0 голосов
/ 03 декабря 2018

Как я могу извлечь из ветви, чтобы начать выборку на конкретном коммите?

Предположим, у меня есть следующие ветви: branch1 и oldbranch1

branch1 - откатверсия oldbranch1

И предположим, что oldbranch1 имеет следующие коммиты:

  • commit_5
  • commit_4
  • commit_3 (объединить somebrancholdbranch1)
  • commit_2
  • commit_1

И на branch1:

  • commit_2
  • commit_1

Теперь я хочу получить обновления от oldbranch1, пропустив commit_3 из oldbranch1, так как он содержит неправильные слияния, удаляющие изменения из commit_2 и commit_1

Как я могу это сделать?есть ли магические команды для этого?

1 Ответ

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

Пропуск коммита означает, в основном, git rebase --interactive:

  • , вы создаете ветку tmp поверх oldbranch1 (git branch tmp oldbranch1)
  • вы rebase -i branch1 этой tmp ветви, воспроизводящей каждый коммит, кроме commit3, который вы можете сбросить
  • вас reset --hard branch1 на новый tmp HEAD.

Последний шаг означает: перемещение (принуждение) branch1 HEAD к tmp, но, поскольку ребаз только добавил новые (переписанные) коммиты к branch1, вы должны иметь возможностьпросто сделать:

git checkout branch1
git merge tmp 

Это должно сделать ускоренное слияние tmp к branch1, просто переместившись branch1 HEAD туда, где tmp.

Тогдабудет достаточно простого git push (или git push -u origin branch1, если branch1 никогда раньше не выдвигался).

...