From 212327d746ecc956233e4f622d65d0568f6beea3 Mon Sep 17 00:00:00 2001 From: Giorgio Previtera Date: Sat, 13 Jul 2019 13:57:35 +0100 Subject: #477 Discard changes when there are merge conflicts If there are merge conflicts, reset the file and discard all changes --- pkg/commands/git.go | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'pkg/commands') diff --git a/pkg/commands/git.go b/pkg/commands/git.go index c767b5917..4e416310e 100644 --- a/pkg/commands/git.go +++ b/pkg/commands/git.go @@ -471,11 +471,17 @@ func (c *GitCommand) RebaseMode() (string, error) { func (c *GitCommand) DiscardAllFileChanges(file *File) error { // if the file isn't tracked, we assume you want to delete it quotedFileName := c.OSCommand.Quote(file.Name) - if file.HasStagedChanges { + if file.HasStagedChanges || file.HasMergeConflicts || file.HasInlineMergeConflicts { if err := c.OSCommand.RunCommand(fmt.Sprintf("git reset -- %s", quotedFileName)); err != nil { return err } } + if file.HasMergeConflicts || file.HasInlineMergeConflicts { + if err := c.OSCommand.RunCommand(fmt.Sprintf("git checkout -- %s", quotedFileName)); err != nil { + return err + } + } + if !file.Tracked { return c.removeFile(file.Name) } -- cgit v1.2.3