Git cherrypick для предыдущего коммита - PullRequest
0 голосов
/ 08 марта 2019

У меня есть дерево git commit что-то вроде этого,

commit1(HEAD->master)
commit2(origin/master)
commit3

Теперь мне нужно выбрать вишню из другой ветки, чтобы дерево коммитов было похоже на

commit1(HEAD->master)
cherrypicked commit
commit2(origin/master)
commit3

Как это сделать?

Ответы [ 2 ]

3 голосов
/ 08 марта 2019

Итак, у вас есть

   ... C ... <--(other_branch)
 /
x ... A <--(origin/master)
       \
        B <--(master)

Первое, что нужно сделать, это вишневый кир C, как обычно, и дать вам

   ... C ... <--(other_branch)
 /
x ... A <--(origin/master)
       \
        B -- C' <--(master)

Затем сделайте интерактивный ребаз

git rebase -i origin/master master

Вы увидите список TODO с одной строкой для каждого коммита между origin/master и master. Поменяйте местами строки B и C', затем сохраните и выйдите.

0 голосов
/ 08 марта 2019

Сначала создайте ветку, начиная с origin / master

git checkout origin/master
git checkout -b wip-reordering

, затем с помощью gitk cherry выберите все элементы, которые вы хотите, в том порядке, в каком вы хотите.

gitk --all .

вы можете выбрать вишню для текущей ветки, используя контекстное меню и щелкнув правой кнопкой мыши

Убедитесь, что вы хотите (если не начать заново с другой ветки)

Как только у вас будет нужная конфигурация, установите главную ветвь в качестве заголовка вашей новой ветки

git branch -f master

Главное, что на вашей рабочей фазе вы находитесь в филиале и не оказывает непосредственного влияния на исходное рабочее состояние. Это значит, что вы можете пытаться снова и снова, пока не получите что-то удовлетворяющее.

Очистить салфетку - ** ветки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...