git stash
Существует замечательная команда: git stash. Дословно, stash -- припрятывать, тайник. Команда позволяет сохранять локальные незакоммиченные изменения, сбрасывая при этом состояние рабочей копии до HEAD'а. То есть, сказав git stash мы "припрятываем" все локальные изменения, получая чистую рабочую копию, в которую можно смело делать git pull не опасаясь возникновения ненужных merge'й.
После получения из репозитория-origin'а всех новых изменений мы можем смело "достать" "припрятанные" изменения и наложить их на текущую рабочую копию командой git stash apply.
Убедившись в успешном наложении изменений, можно сделать долгожданный git add -u, git commit и git push, после чего (или сразу после git stash apply) можно со спокойной совестью грохать сохранённые изменения командой git stash drop.
Более подробно о команде stash:
git stash : добавить текущие незакоммиченные изменения в стек изменений и сбросить текущую рабочую копию до HEAD'а репозитория;
git stash list : показать все изменения в стеке;
git stash show : показать последнее измененеие в стеке (патч);
git stash apply : применить последнее изменение из стека к текущей рабочей копии;
git stash drop : удалить последнее изменение в стеке;
git stash pop : применить последнее изменение из стека к текущей рабочей копии и удалить его из стека;
git stash clear : очистить стек изменений.
Полный синтаксис смотреть командой git help stash (или man git-stash).