Normalnie git pull robi to:

git fetch
git merge

Ale po zmianie w konfiguracji:

git config --global pull.rebase true

będzie robił to:

git fetch
git rebase

Być może mniejszy bałagan w logach i mniej squashowania później.

Ponadto zapomniane, niezkomitowanie zmiany można automatycznie przechować i zaaplikować po pullu jeśli zmieni się to ustawienie:

git config --global rebase.autoStash true

Ewentualny konflikt trzeba będzie normalnie rozwiązać.

Na koniec reguła, podobno Obi-Wana:

Po rebase/amend zawsze git push --force-with-lease nigdy pull.