Это должно сделать трюк. Поскольку мы выбрали вишню, сообщение фиксации, автор и дата автора будут такими же, как и оригинальные коммиты, включая слияния.
В качестве альтернативы, вы можете получить сообщение фиксации и авторство информации из последней фиксации в отрасли до слияния, т.е. второго родителя Merge, добавляя в него следующую строку в первое условие:
git commit --amend -C $(git rev-parse $rev^2)
Эти команды могут быть легко преобразованы в сценарий, если вы часто это делаете.
заказ базовой фиксации (в отдельных состоянии):
git checkout A~0
Вишневый выбрать все коммиты:
for rev in $(git rev-list HEAD..branch-name --first-parent --reverse)
do
if [[ $(git show --summary --format="%P" $rev | wc -w) -gt 1 ]]
then
git cherry-pick $rev --mainline 1
# git commit --amend -C $(git rev-parse $rev^2)
else
git cherry-pick $rev
fi
done
Force старый филиал и проверку:
git branch -f branch-name HEAD
git checkout branch-name
Хотя это своего рода хромой и невероятно hacky, вы можете * направить эту историю в репозиторий svn, который делает именно это. После этого вы можете удалить информацию svn. –
Это не просто хакерство, оно также требует наличия сервера SVN. –
Jeah, это нехорошее решение, я просто хотел упомянуть об этом ради полноты. –