Тут уже ответили в предыдущих комментариях, поэтому я лишь дополню предыдущие ответы. Основное отличие merge от rebase в том, что merge сохраняет историю коммитов, а rebase ее перезаписывает. В этом принципиальное отличие двух команд.
Вот небольшой пример. Допустим, вы сделали кое-какие изменения в своей ветке (назовем ее "feature_branch") и теперь хотите что бы эти изменения появились в master ветке. Для этого выполним:
git status # что бы посмотреть текущий статус
git rebase --continue
Далее, скорее всего будут какие то конфликты, которые вы можете или исправить, или просто проигнорировать. Что бы проигнорировать, выполняете:
git rebase -skip
Далее смотрим, будут ли еще какие то конфликты:
git rebase --continue
И когда rebase завершится, выполните:
git status
git log
На удаленное стороне могут быть какие то изменения. Если вы делаете rebase, то не выполняйте pull запрос, а вместо этого сделайте:
git push -f