How to resolve unstaged changes not shown by "git status"
git
Solution
Turns out `git rebase` is a shell script in `/usr/libexec/git-core/git-rebase`, grepping for "have unstaged changes" in that dir gets exactly one hit, in `git-sh-setup`, in this function:
require_clean_work_tree () {
git rev-parse --verify HEAD >/dev/null || exit 1
git update-index -q --ignore-submodules --refresh
err=0
if ! git diff-files --quiet --ignore-submodules
then
echo >&2 "Cannot $1: You have unstaged changes."
err=1
fi
[ ... ]
and rebase does invoke that. So, to answer
What is rebase seeing that status does not see?
your question, try `git diff-files`.
Problem
Consider ``` $ git status On branch chore/nbsp-fix-2 nothing to commit, working directory clean $ git rebase -i master Cannot rebase: You have unstaged changes. Please commit or stash them. ``` How do I work out what the unstaged changes are that are preventing git from rebasing? Some background: Someone managed to add files with a non-breaking space (%A0) in the name. This has caused problems with the repository. The files show up as not tracked and git thinks the repository is dirty — a similar problem. The technique I was using to correct the problem is to create a new branch before those changes were made and cherry-pick the few commits after those changes. Unfortunately I am now in this situation. I can imagine there is some other file or other remnant of that problem preventing me from moving forward. I am now in this position after cherry-picking the single commit following the bad file names. I'm looking for suggestions for getting past this problem. What is rebase seeing that status does not see?