Я не проверял это, но я думаю, что заставлю ваши коммиты публиковаться на github (таким образом, переписывая историю снова), пусть ваш "друг" вытянет ваши изменения, перебазирует его, затем нажмите его изменения вверх. Таким образом, вы получите оба изменения в одном месте.
Хорошее эмпирическое правило: НИКОГДА НЕ ПРИНИМАЙТЕ КОМИТ ДЛЯ GITHUB :) Сделайте это один раз, чтобы вернуть репо в то состояние, в котором он находился до того, как ваш "друг" испортил его:
# on your machine
git push origin master --force
#now your "friend's" working copy is fairy screwed up, so on his machine:
git checkout -b screwed_up #checks out a new branch called screwed_up
git pull origin master # pulls in your changes
git checkout master #checks out his version with his changes
git rebase screwed_up #moves his changes to the end of your changes (see git graphs for more details)
git commit -am 'your message here'
git push origin master #pushes his changes, which are now merged with your changes back to github