@@ -316,12 +316,18 @@ func (w *Worktree) ResetSparsely(opts *ResetOptions, dirs []string) error {
316
316
}
317
317
}
318
318
319
- if opts .Mode == MergeReset || opts . Mode == HardReset {
319
+ if opts .Mode == MergeReset && len ( removedFiles ) > 0 {
320
320
if err := w .resetWorktree (t , removedFiles ); err != nil {
321
321
return err
322
322
}
323
323
}
324
324
325
+ if opts .Mode == HardReset {
326
+ if err := w .resetWorktree (t , opts .Files ); err != nil {
327
+ return err
328
+ }
329
+ }
330
+
325
331
return nil
326
332
}
327
333
@@ -457,11 +463,6 @@ func (w *Worktree) resetWorktree(t *object.Tree, files []string) error {
457
463
}
458
464
b := newIndexBuilder (idx )
459
465
460
- status , err := w .Status ()
461
- if err != nil {
462
- return err
463
- }
464
-
465
466
for _ , ch := range changes {
466
467
if err := w .validChange (ch ); err != nil {
467
468
return err
@@ -485,13 +486,8 @@ func (w *Worktree) resetWorktree(t *object.Tree, files []string) error {
485
486
}
486
487
}
487
488
488
- // only checkout an untracked file if it is in the list of files
489
- // a reset should leave untracked files alone
490
- file := nameFromAction (& ch )
491
- if status .File (file ).Worktree != Untracked || inFiles (files , file ) {
492
- if err := w .checkoutChange (ch , t , b ); err != nil {
493
- return err
494
- }
489
+ if err := w .checkoutChange (ch , t , b ); err != nil {
490
+ return err
495
491
}
496
492
}
497
493
0 commit comments