Skip to content

Commit d2e1a20

Browse files
committed
feat: add 'reset to custom ref' option in git reset menu
Adds a new menu item (key 'c') to the git reset menu that prompts the user to enter an arbitrary ref to reset to. The prompt includes autocomplete suggestions from all known refs (local branches, remote branches, tags, HEAD, etc.). After confirming the ref, the standard soft/mixed/hard type selection menu is shown. Closes #1985
1 parent 24158aa commit d2e1a20

File tree

3 files changed

+29
-4
lines changed

3 files changed

+29
-4
lines changed

pkg/gui/controllers.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,8 @@ func (gui *Gui) resetHelpersAndControllers() {
2828
recordDirectoryHelper := helpers.NewRecordDirectoryHelper(helperCommon)
2929
reposHelper := helpers.NewRecentReposHelper(helperCommon, recordDirectoryHelper, gui.onSwitchToNewRepo)
3030
rebaseHelper := helpers.NewMergeAndRebaseHelper(helperCommon)
31-
refsHelper := helpers.NewRefsHelper(helperCommon, rebaseHelper)
3231
suggestionsHelper := helpers.NewSuggestionsHelper(helperCommon)
32+
refsHelper := helpers.NewRefsHelper(helperCommon, rebaseHelper, suggestionsHelper)
3333
worktreeHelper := helpers.NewWorktreeHelper(helperCommon, reposHelper, refsHelper, suggestionsHelper)
3434

3535
setCommitSummary := gui.getCommitMessageSetTextareaTextFn(func() *gocui.View { return gui.Views.CommitMessage })

pkg/gui/controllers/helpers/refs_helper.go

Lines changed: 24 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,16 +18,19 @@ import (
1818
type RefsHelper struct {
1919
c *HelperCommon
2020

21-
rebaseHelper *MergeAndRebaseHelper
21+
rebaseHelper *MergeAndRebaseHelper
22+
suggestionsHelper *SuggestionsHelper
2223
}
2324

2425
func NewRefsHelper(
2526
c *HelperCommon,
2627
rebaseHelper *MergeAndRebaseHelper,
28+
suggestionsHelper *SuggestionsHelper,
2729
) *RefsHelper {
2830
return &RefsHelper{
29-
c: c,
30-
rebaseHelper: rebaseHelper,
31+
c: c,
32+
rebaseHelper: rebaseHelper,
33+
suggestionsHelper: suggestionsHelper,
3134
}
3235
}
3336

@@ -280,6 +283,24 @@ func (self *RefsHelper) CreateGitResetMenu(name string, ref string) error {
280283
}
281284
})
282285

286+
menuItems = append(menuItems, &types.MenuItem{
287+
LabelColumns: []string{
288+
self.c.Tr.ResetToCustomRef,
289+
style.FgRed.Sprint("reset --? <ref>"),
290+
},
291+
OnPress: func() error {
292+
self.c.Prompt(types.PromptOpts{
293+
Title: self.c.Tr.EnterRefToResetTo,
294+
FindSuggestionsFunc: self.suggestionsHelper.GetRefsSuggestionsFunc(),
295+
HandleConfirm: func(response string) error {
296+
return self.CreateGitResetMenu(response, response)
297+
},
298+
})
299+
return nil
300+
},
301+
Key: 'c',
302+
})
303+
283304
return self.c.Menu(types.CreateMenuOptions{
284305
Title: fmt.Sprintf("%s %s", self.c.Tr.ResetTo, name),
285306
Items: menuItems,

pkg/i18n/english.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -496,6 +496,8 @@ type TranslationSet struct {
496496
ShellCommand string
497497
CommitChangesWithoutHook string
498498
ResetTo string
499+
ResetToCustomRef string
500+
EnterRefToResetTo string
499501
ResetSoftTooltip string
500502
ResetMixedTooltip string
501503
ResetHardTooltip string
@@ -1618,6 +1620,8 @@ func EnglishTranslationSet() *TranslationSet {
16181620
ShellCommand: "Shell command:",
16191621
CommitChangesWithoutHook: "Commit changes without pre-commit hook",
16201622
ResetTo: `Reset to`,
1623+
ResetToCustomRef: "Reset to custom ref",
1624+
EnterRefToResetTo: "Enter ref to reset to:",
16211625
PressEnterToReturn: "Press enter to return to lazygit",
16221626
ViewStashOptions: "View stash options",
16231627
ViewStashOptionsTooltip: "View stash options (e.g. stash all, stash staged, stash unstaged).",

0 commit comments

Comments
 (0)