anchor.diff:  ///  - `repositoryDir` - The git repository.
   ///  - `commit` - The commit to which git should perform the reset.
   ///  - `file` - The file to reset - null means all files.
  -let soft repositoryDir commit file = "reset --soft" + addArgs commit file |> gitCommand repositoryDir
  +let soft repositoryDir commit file = resetOrCheckout file "soft" + addArgs commit file |> gitCommand repositoryDir
   
   /// Performs a git reset "mixed".
   /// Resets the index but not the working tree and reports what has not been updated. 
  
positive.code: ///  - `repositoryDir` - The git repository.
  ///  - `commit` - The commit to which git should perform the reset.
  ///  - `file` - The file to reset - null means all files.
  let hard repositoryDir commit file = "reset --hard" + addArgs commit file |> gitCommand repositoryDir
  
  /// Performs a git reset "soft" to the current HEAD.
  /// Does not touch the index file nor the working tree at all.
  
negative.code: ///  - `repositoryDir` - The git repository.
  ///  - `commit` - The commit to which git should perform the reset.
  ///  - `file` - The file to reset - null means all files.
  let mixed repositoryDir commit file = resetOrCheckout file "mixed" + addArgs commit file |> gitCommand repositoryDir
  
  /// Performs a git reset "hard".
  /// Resets the index and working tree. Any changes to tracked files in the working tree since <commit> are discarded.
  