Support scenarios where the user might have cancelled a merge in the middle of a merge conflict.
diff --git a/git-flow-feature b/git-flow-feature
index 18467a6..482b298 100644
--- a/git-flow-feature
+++ b/git-flow-feature
@@ -102,7 +102,6 @@
 	parse_args "$@"
 
 	# sanity checks
-	gitflow_require_clean_working_tree
 	gitflow_require_branch $BRANCH
 
 	# detect if we're restoring from a merge conflict
@@ -112,11 +111,26 @@
 		# The user need not necessarily have given the same $NAME twice here
 		# (although he/she should).
 		# 
-		FINISH_BASE="$(cat "$GIT_DIR/.gitflow/MERGE_BASE")"
-		if gitflow_is_branch_merged_into $BRANCH $FINISH_BASE; then
-			rm -f "$GIT_DIR/.gitflow/MERGE_BASE"
-			helper_finish_cleanup
-			exit 0
+
+		# TODO: gitflow_test_clean_working_tree() should provide an alternative
+		# exit code for "unmerged changes in working tree", which we should
+		# actually be testing for here
+		if gitflow_test_clean_working_tree; then
+			FINISH_BASE="$(cat "$GIT_DIR/.gitflow/MERGE_BASE")"
+
+			# Since the working tree is now clean, either the user did a
+			# succesfull merge manually, or the merge was cancelled.
+			# We detect this using gitflow_is_branch_merged_into()
+			if gitflow_is_branch_merged_into $BRANCH $FINISH_BASE; then
+				rm -f "$GIT_DIR/.gitflow/MERGE_BASE"
+				helper_finish_cleanup
+				exit 0
+			else
+				# If the user cancelled the merge and decided to wait until later,
+				# that's fine. But we have to acknowledge this by removing the
+				# MERGE_BASE file and continuing normal execution of the finish
+				rm -f "$GIT_DIR/.gitflow/MERGE_BASE"
+			fi
 		else
 			echo
 			echo "Merge conflicts not resolved yet, use:"
@@ -130,6 +144,9 @@
 		fi
 	fi
 
+	# sanity checks
+	gitflow_require_clean_working_tree
+
 	# update local repo with remote changes first, if asked
 	if [ $FLAG_FETCH -eq 1 ]; then
 		git fetch -q $ORIGIN $BRANCH
@@ -153,7 +170,7 @@
 	if [ $? -ne 0 ]; then
 		# oops.. we have a merge conflict!
 		# write the given $BASE to a temporary file (we need it later)
-        mkdir -p "$GIT_DIR/.gitflow"
+		mkdir -p "$GIT_DIR/.gitflow"
 		echo "$BASE" > "$GIT_DIR/.gitflow/MERGE_BASE"
 		echo
 		echo "There were merge conflicts. To resolve the merge conflict manually, use:"
@@ -171,6 +188,10 @@
 }
 
 helper_finish_cleanup() {
+	# sanity checks
+	gitflow_require_branch $BRANCH
+	gitflow_check_clean_working_tree
+
 	# delete branch
 	git push $ORIGIN :refs/heads/$BRANCH
 	git branch -d $BRANCH