anchor.diff:  
   library jefe.project.commands.git.impl;
   
  +import 'dart:async';
  +
   import 'package:jefe/src/git/git.dart';
  -import 'package:jefe/src/project/project.dart';
  +import 'package:jefe/src/project/jefe_project.dart';
   import 'package:jefe/src/project_commands/project_command.dart';
   import 'package:logging/logging.dart';
  -import 'package:jefe/src/project/jefe_project.dart';
  -import 'dart:async';
   
   Logger _log = new Logger('jefe.project.commands.git.impl');
   
  
positive.code:         }
        });
  
    ProjectCommand checkout(String branchName) =>
        projectCommand('git checkout $branchName', (Project p) async {
          await gitCheckout(await _project.gitDir, branchName);
        });
  
    ProjectCommand updateFromRemote(String branchName,
            [String remoteName = 'origin']) =>
        projectCommand('git update from remote: $branchName', (Project p) async {
          final gitDir = await _project.gitDir;
          await gitCheckout(gitDir, branchName);
          await gitMerge(gitDir, '$remoteName/$branchName');
        });
  
    ProjectCommand merge(String commit) =>
        projectCommand('git merge $commit', (Project p) async {
          await gitMerge(await _project.gitDir, commit);
        });
  }
  
negative.code:   final JefeProject _project;
    GitCommandsImpl(this._project);
  
    Future commit(String message) => executeTask(
        'git commit', () async => gitCommit(await _project.gitDir, message));
  
    Future push() =>
        executeTask('git push', () async => gitPush(await _project.gitDir));
  
    Future fetch() => executeTask('git fetch', () async {
          await gitFetch(await _project.gitDir);
        });
  
    Future assertWorkingTreeClean() =>
        executeTask('git assertWorkingTreeClean', () async {
          if (!await (await _project.gitDir).isWorkingTreeClean()) {
            throw new StateError(
                'working directory dirty for project ${_project.name}');
          }
        });
  
    Future assertOnBranch(String branchName) =>
        executeTask('git assertOnBranch $branchName', () async {
          var currentBranchName =
              (await (await _project.gitDir).getCurrentBranch()).branchName;
          if (currentBranchName != branchName) {
  