anchor.diff:      _scheduleWriteIndex();
     }
   
  +  /**
  +   * Updates the git index. Status of deleted files are removed.
  +   * Status of untracked files are left as untracked.
  +   */
  +  void onCommit() {
  +    Map<String, FileStatus> statusIdx = {};
  +    _statusIdx.forEach((key, FileStatus status) {
  +      if (status.type != FileStatusType.UNTRACKED) {
  +        status.headSha = status.sha;
  +        status.type = FileStatusType.COMMITTED;
  +      }
  +      if (!status.isDeleted) {
  +        statusIdx[key] = status;
  +      }
  +    });
  +    _statusIdx = statusIdx;
  +    _scheduleWriteIndex();
  +  }
  +
     void commitEntry(FileStatus status) {
       status.headSha = status.sha;
       status.type = FileStatusType.COMMITTED;
  
positive.code:       'sha' : sha,
        'size' : size,
        'modificationTime' : modificationTime,
        'type' : type
      };
    }
  
  
negative.code:     size = m['size'];
      modificationTime = m['modificationTime'];
      type = m['type'];
      isDeleted = m['isDeleted'];
    }
  
    /**
  