Git rebase неправильно фиксирует - PullRequest
0 голосов
/ 21 февраля 2019

Я перенес один коммит (диаграмма Хелма) в неправильную ветку, затем CI автоматически создал пакет Хелма и еще один коммит в этой ветке.Затем другой пользователь поместил свой коммит в ту же ветку.Итак, журнал git говорит:

commit 100d13 (HEAD -> MyNewBranch, origin/release/1.2.3.4, origin/MyNewBranch)
Merge: 4a1ea73 af30075
Author: xyz
Date:   Wed Feb 20 17:22:41 2019 +0000

    Merge pull request #14 from Repo/branch-1

    commit message

commit af30075 (origin/branch-1)
Author: Build Bot
Date:   Wed Feb 20 17:20:45 2019 +0000

    [ci skip] build 94:

commit 67d5135
Author: abc
Date:   Wed Feb 20 17:09:41 2019 +0000

    commit message

commit 4a1ea73
Author: Build Bot
Date:   Tue Feb 19 10:21:28 2019 +0000

    [ci skip] build 88: Added prometheus-0.2.0.tgz to repo.

commit 63fac96
Author: Me
Date:   Tue Feb 19 10:17:40 2019 +0000

    My wrong commit message

commit 26bd737
Merge: 1059c5f 25c082a
Author: xyz
Date:   Thu Feb 14 09:08:25 2019 +0000

    Merge pull request #8 from Repo/branch-2

    commit message

Итак, в коммите 100d13 я создал новую ветку из origin / release / 1.2.3.4, в которую я отправил свои изменения.Я хочу перебазировать только 63fac96 и 4a1ea73 в origin / MyNewBranch.Как я могу сделать это правильно?

edit:

                               /--- origin/MyNewBranch ---
--- origin/release/1.2.3.4 ---/                            

Я хочу перебазировать два коммита 63fac96 и 4a1ea73 из релиза / 1.2.3.4 в origin / MyNewBranch и иметь их только там.

1 Ответ

0 голосов
/ 21 февраля 2019

Я понимаю вопрос следующим образом:

Вы случайно слили два коммита в релиз / 1.2.3.4, которые предназначались для другой ветви.Кто-то другой зафиксировал в той же ветке после этого.

Вы хотите, чтобы эти коммиты были удалены из ветки release / 1.2.3.4 и перемещены в новую ветку, где они принадлежат.


Мои предположения:

  • вы не заботитесь о сохранении SHA1 этих коммитов (т.е. я предлагаю cherry-pick).
  • вы хотите сохранить историю в ветке релиза.
  • Вы не заботитесь о сохранении состояния в существующем MyNewBranch.Создание нового на его месте - это нормально.

Решение:

MyNewBranch

  • удалить ветку MyNewBranch.Вы собираетесь создать новый с таким же именем:
git branch -D MyNewBranch
  • оформить заказ 26bd737 (SHA1 до того, как произошла авария):
git checkout 26bd737
  • создайте новую ветку оттуда:
git checkout -b MyNewBranch
  • Вишня выберите два коммита в правильном порядке:
git cherry-pick 63fac96
git cherry-pick 4a1ea73
  • нажмите эту ветку:
git push origin MyNewBranch --force

Эта ветка завершена.

release / 1.2.3.4

  • извлечение ветки выпуска:
git checkout release/1.2.3.4
  • вернуть два коммита, которых не должно быть, в обратном порядке к тому, в котором они были совершены:
git revert 4a1ea73
git revert 63fac96
  • pushта ветка:
git push origin release/1.2.3.4

Вот и все.Вы закончили.Предположительно, Helm создаст новый пакет.

...