Thank you for filling out a Git bug report! Please answer the following questions to help us understand your issue. What did you do before the bug happened? (Steps to reproduce your issue) 1. In a remote repository, have a commit that's only in remote at the tip of the current branch in local. 2. In the local clone of this repository, edit some files and have unstaged changes. 3. In local, run `git pull --ff-only`. What did you expect to happen? (Expected behavior) Fast-forward the local branch to match the remote branch, similar to `git merge --ff-only`. Handle any merge conflicts the same way that `git merge --ff-only` does. What happened instead? (Actual behavior) error: cannot pull with rebase: You have unstaged changes. error: Please commit or stash them. What's different between what you expected and what actually happened? It errored out because of unstaged changes, even though doing `git merge --ff-only` will correctly do what's expected. See below. Anything else you want to add: After doing `git fetch`, I can do `git merge --ff-only` and this fast-forwards the branch as expected. Isn't `git pull --ff-only` basically the same as doing these two (fetch and merge)? Please review the rest of the bug report below. You can delete any lines you don't wish to share. [System Info] git version: git version 2.45.1 cpu: arm64 no commit associated with this build sizeof-long: 8 sizeof-size_t: 8 shell-path: /bin/sh feature: fsmonitor--daemon uname: Darwin 23.5.0 Darwin Kernel Version 23.5.0: Wed May 1 20:12:58 PDT 2024; root:xnu-10063.121.3~5/RELEASE_ARM64_T6000 arm64 compiler info: clang: 15.0.0 (clang-1500.3.9.4) libc info: no libc information available $SHELL (typically, interactive shell): /bin/zsh [Enabled Hooks] post-checkout post-commit post-merge pre-push