Итак, вот мое решение:
git rebase <branch> \
-ix "git rev-parse --short HEAD > tmp && \
echo 'from: $<branch_shortid>' > tmp && \
git commit --amend -F tmp"
Убедитесь, что branch_shortid
правильно и сгенерировано в ветке, для которой вы хотите перебазировать контент из .
Отказ от ответственности: я не уверен, что это будет работать во всех случаях, особенно если у вас есть какие-то странные или сложные системы ссылок. Я запустил это на очень простом репозитории git, сгенерированном:
$ git init
$ echo "a" > a.txt && git add . && git commit -m "first commit"
$ git checkout -b "feature1"
$ echo "b" > b.txt && git add . && git commit -m "second commit"
$ echo "c" > c.txt && git add . && git commit -m "third commit"
$ feature1id=$(git rev-parse --short HEAD)
$ git checkout master
$ git rebase feature1 \
-ix "git rev-parse --short HEAD > tmp && \
echo 'from: $feature1_id' > tmp && \
git commit --amend -F tmp"
Вот соответствующий вывод:

Обсуждение:
Как указывалось ранее, я думаю, что вы используете git reflog
- лучшее решение для изучения того, из какого коммита, какая ветвь была объединена с желаемой.
Смысл перебазирования в том, чтобы применить коммиты к вершине другой ветви, как если бы это была структура коммитов:
Перебазирование создает линейную историю .