diff --git a/thefuck/rules/git_add.py b/thefuck/rules/git_add.py index 66f3472..10415d9 100644 --- a/thefuck/rules/git_add.py +++ b/thefuck/rules/git_add.py @@ -4,8 +4,7 @@ from thefuck import utils, shells @utils.git_support def match(command, settings): - return ('git' in command.script - and 'did not match any file(s) known to git.' in command.stderr + return ('did not match any file(s) known to git.' in command.stderr and "Did you forget to 'git add'?" in command.stderr) diff --git a/thefuck/rules/git_branch_delete.py b/thefuck/rules/git_branch_delete.py index f4bf218..8f20bc4 100644 --- a/thefuck/rules/git_branch_delete.py +++ b/thefuck/rules/git_branch_delete.py @@ -3,7 +3,7 @@ from thefuck import utils @utils.git_support def match(command, settings): - return ('git branch -d' in command.script + return ('branch -d' in command.script and 'If you are sure you want to delete it' in command.stderr) diff --git a/thefuck/rules/git_branch_list.py b/thefuck/rules/git_branch_list.py index 9f6dd5f..b397540 100644 --- a/thefuck/rules/git_branch_list.py +++ b/thefuck/rules/git_branch_list.py @@ -4,7 +4,7 @@ from thefuck import utils, shells @utils.git_support def match(command, settings): # catches "git branch list" in place of "git branch" - return command.script.split() == 'git branch list'.split() + return command.script.split()[1:] == 'branch list'.split() @utils.git_support diff --git a/thefuck/rules/git_checkout.py b/thefuck/rules/git_checkout.py index c3a3fce..992f615 100644 --- a/thefuck/rules/git_checkout.py +++ b/thefuck/rules/git_checkout.py @@ -5,8 +5,7 @@ from thefuck import shells, utils @utils.git_support def match(command, settings): - return ('git' in command.script - and 'did not match any file(s) known to git.' in command.stderr + return ('did not match any file(s) known to git.' in command.stderr and "Did you forget to 'git add'?" not in command.stderr) diff --git a/thefuck/rules/git_diff_staged.py b/thefuck/rules/git_diff_staged.py index a35234e..9e6d202 100644 --- a/thefuck/rules/git_diff_staged.py +++ b/thefuck/rules/git_diff_staged.py @@ -3,8 +3,7 @@ from thefuck import utils @utils.git_support def match(command, settings): - return ('git' in command.script and - 'diff' in command.script and + return ('diff' in command.script and '--staged' not in command.script) diff --git a/thefuck/rules/git_not_command.py b/thefuck/rules/git_not_command.py index 1fa707a..81214b8 100644 --- a/thefuck/rules/git_not_command.py +++ b/thefuck/rules/git_not_command.py @@ -4,8 +4,7 @@ from thefuck.utils import get_closest, git_support @git_support def match(command, settings): - return ('git' in command.script - and " is not a git command. See 'git --help'." in command.stderr + return (" is not a git command. See 'git --help'." in command.stderr and 'Did you mean' in command.stderr) diff --git a/thefuck/rules/git_pull.py b/thefuck/rules/git_pull.py index 65f44ea..773cfa3 100644 --- a/thefuck/rules/git_pull.py +++ b/thefuck/rules/git_pull.py @@ -3,8 +3,7 @@ from thefuck import shells, utils @utils.git_support def match(command, settings): - return ('git' in command.script - and 'pull' in command.script + return ('pull' in command.script and 'set-upstream' in command.stderr) diff --git a/thefuck/rules/git_pull_clone.py b/thefuck/rules/git_pull_clone.py index c5e68a7..79472ea 100644 --- a/thefuck/rules/git_pull_clone.py +++ b/thefuck/rules/git_pull_clone.py @@ -1,11 +1,9 @@ -import re -from thefuck import utils, shells +from thefuck import utils @utils.git_support def match(command, settings): - return ('git pull' in command.script - and 'fatal: Not a git repository' in command.stderr + return ('fatal: Not a git repository' in command.stderr and "Stopping at filesystem boundary (GIT_DISCOVERY_ACROSS_FILESYSTEM not set)." in command.stderr) diff --git a/thefuck/rules/git_push.py b/thefuck/rules/git_push.py index 5b6ea09..34b16d2 100644 --- a/thefuck/rules/git_push.py +++ b/thefuck/rules/git_push.py @@ -3,8 +3,7 @@ from thefuck import utils @utils.git_support def match(command, settings): - return ('git' in command.script - and 'push' in command.script + return ('push' in command.script and 'set-upstream' in command.stderr) diff --git a/thefuck/rules/git_push_force.py b/thefuck/rules/git_push_force.py index 4623817..5b3f25d 100644 --- a/thefuck/rules/git_push_force.py +++ b/thefuck/rules/git_push_force.py @@ -3,8 +3,7 @@ from thefuck import utils @utils.git_support def match(command, settings): - return ('git' in command.script - and 'push' in command.script + return ('push' in command.script and '! [rejected]' in command.stderr and 'failed to push some refs to' in command.stderr and 'Updates were rejected because the tip of your current branch is behind' in command.stderr) diff --git a/thefuck/rules/git_push_pull.py b/thefuck/rules/git_push_pull.py index 2958a2c..7ae7b9a 100644 --- a/thefuck/rules/git_push_pull.py +++ b/thefuck/rules/git_push_pull.py @@ -4,8 +4,7 @@ from thefuck.shells import and_ @utils.git_support def match(command, settings): - return ('git' in command.script - and 'push' in command.script + return ('push' in command.script and '! [rejected]' in command.stderr and 'failed to push some refs to' in command.stderr and 'Updates were rejected because the tip of your current branch is behind' in command.stderr) diff --git a/thefuck/rules/git_stash.py b/thefuck/rules/git_stash.py index 76cbdf4..1fb0286 100644 --- a/thefuck/rules/git_stash.py +++ b/thefuck/rules/git_stash.py @@ -5,7 +5,7 @@ from thefuck import shells, utils def match(command, settings): # catches "Please commit or stash them" and "Please, commit your changes or # stash them before you can switch branches." - return 'git' in command.script and 'or stash them' in command.stderr + return 'or stash them' in command.stderr @utils.git_support