Лучший способ сделать это, как указано в @ElpieKay's comment, и в конце вашего вопроса: объединить staging
в warning-fixes
, а затем сбросить staging
к предыдущей фиксации.
Чтобы сделать это из командной строки, выполните:
git checkout warning-fixes
git merge staging
git checkout staging
git reset --hard HEAD^
В SourceTree:
- Дважды щелкните
warning-fixes
, чтобы проверить его.
- Щелкните правой кнопкой мыши по адресу
staging
.
- Нажмите
Merge staging into current branch
.
- Дважды щелкните
staging
, чтобы проверить это.
- Щелкните правой кнопкой мыши предыдущую фиксацию, где в настоящий момент находится
origin/staging
.
- Нажмите
Reset current branch to this commit
.
Причина, по которой вы не хотите использовать rebase
, заключается в том, что она не просто перемещает коммиты, но также перемещает указатель ветвления. В этом случае попытка переустановки staging
на warning-fixes
не повлияет, так как фиксация на конце staging
уже имеет тот же родительский элемент, что и кончик warning-fixes
.
Единственная реальная альтернатива - использовать cherry-pick
, но это будет (по умолчанию) создать дубликат фиксации с новой датой коммиттера. (И становится больно, если у вас есть более чем одна фиксация для перемещения.)
Слияние постановки с фиксированным предупреждением в порядке. Он ничего не сделает для постановки. В этом случае вы также можете сбросить предупреждения на установку. – ElpieKay
Но разве это можно сделать с помощью rebase? - literaly переместить фиксацию и все ее дочерние элементы в другую ветку, если изменения «слияния» – Antoniossss