Мне бы каким-то магическим образом вычислить все изменения, которые нужно сделать в ветке 2, чтобы получить ровно такое же состояние, какое сейчас в ветке 1. И сделать новый коммит в ветку 2, чтобы получить состояние как в ветке 1.
$ git checkout branch2 # перейти к ветке branch2
$ git reset --hard branch1 # скопировать в неё историю и текущее состояние ветки branch1
$ git reset --soft HEAD@{1} # восстановить историю ветки branch2, но не трогать текущее состояние
$ git commit -m 'magic commit' # закоммитить текущее состояние (равное разности branch2 -> branch1) в branch2