-git-update-index --refresh &&
-test '' = "`git-diff-index --cached --name-only $head`" || {
- die "Need real merge but the working tree has local changes."
-}
+# At this point, we need a real merge. No matter what strategy
+# we use, it would operate on the index, possibly affecting the
+# working tree, and when resolved cleanly, have the desired tree
+# in the index -- this means that the index must be in sync with
+# the $head commit. The strategies are responsible to ensure this.
+
+case "$use_strategies" in
+?*' '?*)
+ # Stash away the local changes so that we can try more than one.
+ savestate
+ single_strategy=no
+ ;;
+*)
+ rm -f "$GIT_DIR/MERGE_SAVE"
+ single_strategy=yes
+ ;;
+esac