Please try the following: mmatrosov@Mikhail-PC:~/test$ git init --bare server Initialized empty Git repository in /home/mmatrosov/test/server/ mmatrosov@Mikhail-PC:~/test$ git clone server local Cloning into 'local'... warning: You appear to have cloned an empty repository. done. mmatrosov@Mikhail-PC:~/test$ cd local mmatrosov@Mikhail-PC:~/test/local$ echo a > a && git add . && git commit -m A [master (root-commit) a34c21f] A 1 file changed, 1 insertion(+) create mode 100644 a mmatrosov@Mikhail-PC:~/test/local$ git push Counting objects: 3, done. Writing objects: 100% (3/3), 205 bytes | 0 bytes/s, done. Total 3 (delta 0), reused 0 (delta 0) To /home/mmatrosov/test/server * [new branch] master -> master mmatrosov@Mikhail-PC:~/test/local$ git pull Already up-to-date. mmatrosov@Mikhail-PC:~/test/local$ git pull --rebase=preserve Rebasing (1/1) Successfully rebased and updated refs/heads/master. As you can see, running bare "git pull" just tells me everything is up to date. However, running "git pull --rebase=preserve" triggers rebasing of something. It wont be a problem if it didn't take significant time (especially on Windows). Why this rebase happens? It is completely redundant and slows down the pull operation. Looks like a bug to me. Note that it is important to me, because I want to set "git config --global pull.rebase preserve". But because of this issue, pulling on an up-to-date repository takes a lot of time. Which is very frustrating. Tested with: * git version 2.19.0.windows.1 in Windows 10 Version 1803 * git version 2.7.4 in Ubuntu 16.04.3 LTS (inside WSL) ----- Best regards, Mikhail Matrosov