diff --git a/autoload/magit/git.vim b/autoload/magit/git.vim
index 0d4e55e9094167ce55944f4edfb3592d71d12e45..66b0181184750946b51c50e8d6a08b459be6b56f 100644
--- a/autoload/magit/git.vim
+++ b/autoload/magit/git.vim
@@ -59,7 +59,20 @@ endfunction
 " message is raised.
 " param[in] filemane: it must be quoted if it contains spaces
 function! magit#git#git_add(filename)
-	let git_cmd=s:git_cmd . " add -- " . a:filename
+	let git_cmd=s:git_cmd . " add --no-ignore-removal -- " . a:filename
+	silent let git_result=magit#utils#system(git_cmd)
+	if ( v:shell_error != 0 )
+		echoerr "Git error: " . git_result
+		echoerr "Git cmd: " . git_cmd
+	endif
+endfunction
+
+" magit#git#git_checkout: helper function to add a whole file
+" nota: when git fail (due to misformated patch for example), an error
+" message is raised.
+" param[in] filemane: it must be quoted if it contains spaces
+function! magit#git#git_checkout(filename)
+	let git_cmd=s:git_cmd . " checkout -- " . a:filename
 	silent let git_result=magit#utils#system(git_cmd)
 	if ( v:shell_error != 0 )
 		echoerr "Git error: " . git_result
@@ -72,7 +85,7 @@ endfunction
 " message is raised.
 " param[in] filemane: it must be quoted if it contains spaces
 function! magit#git#git_reset(filename)
-	let git_cmd=s:git_cmd . " reset -- " . a:filename
+	let git_cmd=s:git_cmd . " reset HEAD -- " . a:filename
 	silent let git_result=magit#utils#system(git_cmd)
 	if ( v:shell_error != 0 )
 		echoerr "Git error: " . git_result