git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH] rebase: improve error messages about dirty state

From
Jeff King <peff@peff.net>
Date
Dec 10, 2008, 09:25 UTC
Message-ID
<20081210092518.GA14424@coredump.intra.peff.net>

If you have unstaged changes in your working tree and try to rebase, you will get the cryptic "foo: needs update" message, but nothing else. If you have staged changes, you get "your index is not up-to-date".

Let's improve this situation in two ways:
 - for unstaged changes, let's also tell them we are
   canceling the rebase, and why (in addition to the "needs
   update" lines)
 - for the staged changes case, let's use language that is a
   little more clear to the user: their index contains
   uncommitted changes
Signed-off-by: Jeff King <peff@peff.net>
---
I am cleaning up some old branches, and I think this is worth applying.
It came out of a "rebase's error message is confusing" thread back in
April:
  http://thread.gmane.org/gmane.comp.version-control.git/78698

It would be nice also to say "foo: locally modified" instead of "foo: needs update" but the REFRESH_SAY_CHANGED functionality isn't exposed via the command line.

 git-rebase.sh |    9 ++++++---
 1 files changed, 6 insertions(+), 3 deletions(-)
diff --git a/git-rebase.sh b/git-rebase.sh
index ea7720d..ebd4df3 100755
--- a/git-rebase.sh
+++ b/git-rebase.sh
@@ -332,11 +332,14 @@ else
 fi
 
 # The tree must be really really clean.
-git update-index --ignore-submodules --refresh || exit
+if ! git update-index --ignore-submodules --refresh; then
+	echo >&2 "cannot rebase: you have unstaged changes"
+	exit 1
+fi
 diff=$(git diff-index --cached --name-status -r --ignore-submodules HEAD --)
 case "$diff" in
-?*)	echo "cannot rebase: your index is not up-to-date"
-	echo "$diff"
+?*)	echo >&2 "cannot rebase: your index contains uncommitted changes"
+	echo >&2 "$diff"
 	exit 1
 	;;
 esac
-- 
1.6.1.rc2.15.g7752a
Message 1 of 1 in “rebase: improve error messages about dirty state”
  1. rebase: improve error messages about dirty stateJeff King, Dec 10, 2008

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.