diff --git a/tests/rules/test_git_checkout.py b/tests/rules/test_git_checkout.py index 355b6862..a803f201 100644 --- a/tests/rules/test_git_checkout.py +++ b/tests/rules/test_git_checkout.py @@ -52,7 +52,7 @@ def test_get_branches(branches, branch_list, git_branch): @pytest.mark.parametrize('branches, command, new_command', [ (b'', Command('git checkout unknown', did_not_match('unknown')), - 'git branch unknown && git checkout unknown'), + 'git checkout -b unknown'), (b'', Command('git commit unknown', did_not_match('unknown')), 'git branch unknown && git commit unknown'), diff --git a/thefuck/rules/git_checkout.py b/thefuck/rules/git_checkout.py index 934f0a49..65705f4f 100644 --- a/thefuck/rules/git_checkout.py +++ b/thefuck/rules/git_checkout.py @@ -34,6 +34,8 @@ def get_new_command(command): fallback_to_first=False) if closest_branch: return replace_argument(command.script, missing_file, closest_branch) + elif command.script_parts[1] == 'checkout': + return replace_argument(command.script, 'checkout', 'checkout -b') else: return shell.and_('git branch {}', '{}').format( missing_file, command.script)