diff options
| -rw-r--r-- | git-rebase--interactive.sh | 18 | ||||
| -rwxr-xr-x | t/t3404-rebase-interactive.sh | 14 | 
2 files changed, 31 insertions, 1 deletions
| diff --git a/git-rebase--interactive.sh b/git-rebase--interactive.sh index c6ba7c1551..5c94506098 100644 --- a/git-rebase--interactive.sh +++ b/git-rebase--interactive.sh @@ -647,8 +647,24 @@ continue)  	then  		: Nothing to commit -- skip this  	else +		if ! test -f "$author_script" +		then +			die "You have staged changes in your working tree. If these changes are meant to be +squashed into the previous commit, run: + +  git commit --amend + +If they are meant to go into a new commit, run: + +  git commit + +In both case, once you're done, continue with: + +  git rebase --continue +" +		fi  		. "$author_script" || -			die "Cannot find the author identity" +			die "Error trying to find the author identity to amend commit"  		current_head=  		if test -f "$amend"  		then diff --git a/t/t3404-rebase-interactive.sh b/t/t3404-rebase-interactive.sh index 8538813d1d..b981572d73 100755 --- a/t/t3404-rebase-interactive.sh +++ b/t/t3404-rebase-interactive.sh @@ -527,6 +527,20 @@ test_expect_success 'auto-amend only edited commits after "edit"' '  	git rebase --abort  ' +test_expect_success 'clean error after failed "exec"' ' +	test_tick && +	test_when_finished "git rebase --abort || :" && +	( +		FAKE_LINES="1 exec_false" && +		export FAKE_LINES && +		test_must_fail git rebase -i HEAD^ +	) && +	echo "edited again" > file7 && +	git add file7 && +	test_must_fail git rebase --continue 2>error && +	grep "You have staged changes in your working tree." error +' +  test_expect_success 'rebase a detached HEAD' '  	grandparent=$(git rev-parse HEAD~2) &&  	git checkout $(git rev-parse HEAD) && | 
